Photo Courtesy: Ganesh H. Shankar.
Winner of numerous awards from Wildlife Photographer of the Year 2016, Birds Category (Natural History Museum, London) to first place in the macro category in Nature Photography Network, Ganesh H. Shankar is also the co-author of the book, Daroji – An Ecological Destination and the founding member of Creative Nature Photography, a popular online photography forum. He has also served on the jury of several photography awards including the Sanctuary Wildlife Photography Awards 2017. As a nature photographer, Shankar believes that his is a long and never-ending journey in search of art, and he is always on the lookout for forms, shapes, details, postures, light and more that is relatable to life's experiences. His artistry is evident in his images that take the reader to a whole new level of visual experience. He speaks to Lakshmy Raman about his work and why he believes that photographers must choose to define the intent behind their imagery.
Why wildlife photography? How did you become interested in photography?
I completed my post-graduation in Computer Science and joined government service as a scientist. Though I am an engineer by profession, photography is my true passion. I took it up as a hobby over two decades ago. I bought my first point-and-shoot camera in 1993 to capture the beauty of the Western Ghats during a trek. A few years later, a classmate of mine introduced me to SLR cameras and bought one for me. I was hooked! I spent all my spare time exploring natural habitats and trying to capture some of its magic and glory. I taught myself the basics of nature photography by reading a series of books written by the great John Shaw.
Who were your influences while growing up?
I spent much of my childhood years with my grandmother in a small coastal village called Bada near Byndoor in the Udupi district of Karnataka. She truly played a key role in my love for nature. My grandmother had the task of managing the household livestock. I often accompanied her to the nearby foothills of the Western Ghats to bring back our cows and buffaloes. Those silent, pristine streams and mountains and valleys etched lasting impressions in my mind. I grew up listening wide-eyed to stories my grandmother regaled me with about tigers attacking our cows, about King Vultures and more. I often saw vultures in the wild then, but sadly they are now a rarity. All these early experiences moulded my interests and made me who I am today.
What excites you about being a photographer?
Photography satisfies my creative urge. It nourishes my soul. To me, the words nature photography go beyond our natural world – landscapes, seascapes, night skies and their denizens, though I do enjoy photographing these. Over the years I have shot thousands of such images trying to capture the colours, patterns, designs, behaviours, actions, and the mood and emotions they invoke. What I try to photograph these days is the very essence of life. Nature photography for me is everything the universe gives us – its laws, principles, the totality of all things that exist, the natural forces that exist, create and control the universe. Nothing that we humans have created so far is as mysterious, as magical, as mind blowing as 'life' is, be it in science or art that we have indulged in all these years. Next time you see a seed sprouting take a moment to think about the emerging new life! It will grow, new seeds will germinate, so will new sprouts during the next monsoon. It needs to be felt, not just seen. My work is very personal and as I said earlier, it serves my emotional needs. I enjoy portraying beauty from the artistic rendering of nature to philosophy now.
What according to you makes a great photograph?
I think any photograph (and the photographer), great or otherwise, is not greater than the subject itself. That said, I asked this question myself a few years ago. I turned to Google then. If you searched for the 'greatest photographs' you will see several lists popping up – 'Top 10 greatest photographs', '20 of the greatest, most iconic photos ever taken' and so on. Of these lists, 99 per cent of photographs portray war atrocities, human suffering, racial discrimination, misery… basically, themes around death. I have not seen any lists that include a beautiful mountain or a stunning waterfall.
Why is this? I think Darwin answered this – survival. Subjects around survival of the human species and morality take precedence over everything else that gets photographed. We love ourselves more than any other subject. "The world is going to pieces and people like Adams and (Edward) Weston are photographing rocks!" This is what Henry Cartier Bresson said about acclaimed photographers Ansel Adams and Edward Weston. If we interchange the subjects in Kevin Carter's 'Famine in Sudan', to one of a dying vulture and an onlooker, would it have won the Pulitzer prize? At best, it would have become yet another 'conservation photograph' and been forgotten the next day.
It is not that that I am unmoved by photographs of human suffering. However, the formula of depicting misery and human suffering to make a 'great' photograph is not one that I agree with. At the same time, as a nature photographer who currently enjoys wondering about the mysteries of nature in the micro and macro universe, I will not categorise a 'great photograph' as in doing so I am sure to exclude categories that I am not familiar with or which are not as popular.
You have spent hours and hours out in the field. What has been your toughest moment?
I hate being stuck amidst 50 tiger chasing safari gypsies in our national parks. I consciously try to avoid spots where tigers are found in popular parks such as Corbett. I do enjoy photographing the majestic tiger but just not in the crazy melee that ensues when a tiger is spotted. I wish all visitors to the park learned to behave from the wildlife they come to see.
Is there one wildlife image you have taken that is particularly dear to you?
Honestly none! I have taken tens of thousands of images and each image made sense to me when I shot it and may or may not necessarily now. My images reflect my changing interests over time.
You have photographed several wildernesses. Do you have a favourite destination?
As I mentioned earlier, I stay away from crowded places. I love photographing where I have the freedom to explore. It need not be an exotic destination. That's why I enjoy spending time in Bharatpur National Park and some pristine areas of the Western Ghats. I have not photographed much outside of India. My subjects range from a falling leaf to an ant to an elephant. Any place is good if I can be alone and think peacefully.
How do you plan for a photography trip?
I visit a few parks every year. If I am visiting an area for the first time, I research the work of other photographers to better understand the opportunities and the kind of visuals I may be able to make.
I started with a point-and-shoot film camera and later bought a Nikon N70 and a Nikon F5, which mainly used slides (Fuji Velvia/Provia 100F). I then switched to digital in 2005 when I bought a Nikon D200, D300, D700, D800E, D810, and a 4x5 large format view camera. I use all kinds of lenses from 11 mm. to 600 mm. f/4, and a variety of special equipment.
What are your must-have essentials as a photographer?
For me, it is solitude and peace of mind in the field.
What is your opinion regarding the wildlife photography scene in India?
It is great to see a phenomenal increase in new and skilled photographers now, especially very talented young minds.
And your thoughts on the increasing use of technology to manipulate images?
Digital ethics is a slippery topic. What was strictly no-no a decade ago when digital technology took off is an accepted first step in post processing (for example cropping, noise removal, local contrast/brightness adjustments and so on). Whatever is not acceptable today may become acceptable a few years from now. So, it is all relative. I strongly believe that in nature photography we need not faithfully represent what we see. It is not possible to represent the way we see due to technological limitations. What the human eye sees is very different from what is seen through a 600 mm. f/4 lens. Similarly, the use of different flashes, colour gels, shift lenses and other optical manipulations have been accepted due to photographic legacy. We criticise post processing and debate digital manipulation, then why not a debate on optical manipulation? Both are manipulations of reality.
However, that does not mean I think cropping a tiger's head from an image and placing it on a lion's is fine. That is a strict no today and will always be so. I am talking about options such as using limitations of recording mediums to our advantages, creative cropping, choosing perspectives, which are readily not apparent to name a few. To summarise, options which go beyond just plain seeing to seeing through our minds.
Take for example my image of a tailed jay butterfly hovering over a flower to sip nectar. I wanted to portray this artistically and decided on very slow shutter speed. I positioned the camera in such a way as to get the shadow of a tree in the background. Due to the constraints of the recording medium, the background appeared black. This is a perfect example of the limitation of the medium even as I used it for artistic merit. If I do not state that the fume-like green parts are the flapping wings of a tailed jay butterfly hovering over a flower, most people would not know. Further, for the plain seeing through 50 mm. eyes of a human being, the composition as presented is not very apparent. One of the lessons I have learnt over the years is to always look through the lens! You learn this only through experience.
What about unethical behaviour by some photographers who pick up frogs or snakes and place them against more interesting backgrounds for a better image? Can that be justified as creativity?
Absolutely not. Following an ethical compass in every aspect of your life is vital. I have come across images where nests are physically placed before the photograph was taken or cut/pasted in photoshop. The former is a crime and the latter is unethical if not disclosed. Photographers often fail to mention the intent of their work – if your goal is to capture and celebrate natural history, then follow the ethical requirements for that. If your intent is more artistic, perhaps to capture the curves of an elephant's back and this is best served in a monochrome rendition with some post processing, then that is equally fair to do so in my view.
The aim should not be to take an image and then manipulate it to be the best or adjust the scene to suit your needs… but rather challenge yourself to become a better photographer. Worship the subject through your image… not the image or the photographer.
How important is it to use photography for conservation?
For me that is a given. Photographs can make a huge difference – camera-trap images are providing us glimpses of life in inaccessible areas, stunning visuals can convince policy makers of the importance of preserving habitats and images of roadkills or abused animals can stir emotions that could translate into action. Photographs must stir emotions – whether it is joy, sadness or anger – it must have the power to move. I also believe that photographs serve to meet the photographer's own emotional needs. I do make images that I don't share with anyone – they are for me, almost like breathing for myself.
What is your message to young photographers?
Please think before pressing the shutter. When in doubt, don't press the shutter. All about seeing can't be expressed in words and a lot of it is personal. Sometimes when we see nature or wildlife around us, the feeling we get may be very difficult to express. But we may be able to translate some of it into images in our own way. I think the key is to spend time in thinking, exploring possibilities, and pre-visualising. In the field, if we run behind a bird to make a close portrait, we will not achieve our goal of making lasting images.
First appeared in: Sanctuary Asia, Vol. XXXVII No. 10, October 2017.


Ashwagandha was recommended by my integrative MD when I was having fatigue and taking naps during the day. It is my first and only adrenal support in my chronic lyme.
You probably don't have time to get sick; after all' work and personal matters usually don't wait for you to recover. A strong immune system might decrease your chances of catching that bug that's going around the office. Ayush Herbs' Ashwagandha Capsules may offer natural support for immunity and prevent you from falling off life's treadmill.
These ashwagandha capsules might help you maintain the level of energy needed for your busy lifestyle. Ashwagandha (also known as withania somnifera) is an herb commonly used as an adaptogen in traditional Ayurvedic medicine; like other adaptogens' it may help your body cope with everyday stressors more effectively.
Ashwagandha Capsules may help address symptoms associated with mild illnesses' since ashwagandha extract aids your white blood cells in fighting off infections.
Each of these ashwagandha capsules provides 25 milligrams of withanolides' which are the active compounds in ashwagandha. Withanolides may have antioxidant properties that work to protect your cells from free radicals.
At the recommended dosage of one capsule twice daily' every 60-capsule bottle of Ashwagandha by Ayush Herbs should last for about one month.
1 capsule two (2) times daily or as directed by your physician.
Ashwagandha by Ayush Herbs is part of my adrenal support regimen for my chronic lyme. It has been a wonderful addition to the regimen as I feel great!


Canapé Chesterfield But. deco in paris canape 3 places velours gris chesterfield can chester 3p velours gris. canape chesterfield british dialma brown. canap chesterfield original 2 places rose moore. deco in paris canape 2 places velours gris chesterfield can chester 2p velours gris. canap chesterfield chic et raffin. canape chesterfield en cuir pas cher. canap chesterfield en cuir kensington 2 places rose moore. canape chesterfield gris maison design. canap chesterfield original rose moore. canape chesterfield but maison design. [Alainviescaarts.com].


The medical industry is full of concerning risks for the safety of those who work in it. With an important job to do on a daily basis, it is important that individuals take into account the various kinds of risk factors that could result in serious illness or injury.
These are a given in the medical industry and are a daily encounter for many people in the field. Ranging from harsh acids, to solvents and even hazardous chemicals, exposure to these can be detrimental. Allergies, respiratory disorders and even burns are a common side effect of handling such substances. Wearing safety gloves, overalls or scrubs and a pair of high quality chemical resistant boots can prevent the effects of exposure to these.
Blood, faeces and contaminated medical waste carry a host of possible risks. Expose to these can cause a number of conditions some of which being HIV/aids, hepatitis B and C, and pathogens that cause bacterial infections. You can prevent many of these by wearing surgical gloves, chemical resistant boots and a facemask when you are working with any of the above hazardous materials. Should you come into contact with any of the above in a way that could compromise your health, please consult a medical professional immediately.
These could include dangerous working conditions or injuries resulting in slips and falls. Being aware of physical hazards such as wet floors and uneven ground can lessen the threat of these in your place of work.
These involve repetitive movements carried out on a daily basis. Injuries like strains and sprains are common in medical staff as they do the same tasks each and every day. Working in poor lighting that affects eyesight is also recognised as an ergonomic hazard. Ensure that you are not overexerting yourself by taking regular breaks, sitting down, eating enough food and drinking enough water. This will lessen the fatigue you may experience from spending long hours on your feet. Comfortable protective footwear will also detract from levels of fatigue.
These are often overlooked, although the mental health of those in the medical industry is always at risk. Having to deal with potentially traumatic and disturbing cases often leaves those who work in the field with posttraumatic stress disorder, anxiety and even insomnia. Being aware of your mental state is key to identifying potential psychological hazards. Should you notice any changes in the behaviour of yourself or your colleagues that may be cause for concern, do alert a superior who will be able to help.
At Wayne we aim to safeguard your protection, regardless of the industrial environment that you may find yourself in. For more information on our tailored ranges, please visit our website, www.wayne-safety.com.


Spectacular waterfalls abound in the South Carolina Upstate region.
While some waterfalls are easily accessible, others are hard to find and require expert hiking skills.
Clark, J. F., & Dantzler, J., (1998). Hiking South Carolina. Helena, MT: Falcon.
Cook, T., & Brooks, B., (2008). The waterfalls of South Carolina. (3rd ed.). Spartanburg, SC: Palmetto Conservation Foundation Press.


Kootenay Lake Ferry-Our Chance to Change the Service?
In the May Mainstreet, Nicole Plouffe has submitted a letter with an update on the issue of changing the ferry schedule to an hourly (or every two hours in the slow season) schedule. There are posters around town, an on-line petition and a letter-writing campaign is on-going. The deadline for the negotiation of a new contract is right about now, but the good news is that there is still wiggle-room of three months within settling the contract to make changes, and we've got some MLA support going to legislature now! This is great news.
A quick background: This issue arose when a local was informed that the service contract was being negotiated and that if we wanted to see any changes made, the time is now. The Ministry of Tranportation holds that they didn't recieve a great resounding response from the East Shore when the last contract was negotiated in 2003/04, although residents say that there were extensive surveys done and input given. A couple of form letters were drafted and disbursed to the community for this contract renewal time and a petition was begun in order to make voicing our thoughts more simplified. Residents have been encouraged to write to Minsiter Blair Lekstrom about our concerns and requests and signatures contine to be gathered.
The online petition has garnered more than 260 signatures with many great responses.
We've had some media exposure with Jayanti Holman getting an article in the Creston Valley Advance, the ongoing letter presence in The East Shore Mainstreet and www.eshore.ca. As well, I received some exposure on EZ Rock radio.
Those of you who wrote in letters to Blair Lekstrom may have received a form letter from his office stating that at this time and "current fiscal climate" they will not allow the increase to current service levels.
Obviously they had only a cursory look at the letters since we weren't asking for an increase in ferry sailings but rather an hourly schedule that would expand the sailings from early morning into later evening. The savings on fuel would certainly pay for extra crew costs. Thanks to our Chamber of Commerce and other residents who came up with a cost evaluation over the years, but this information seems to fall on deaf ears in the legislature.
MLA Michelle Mungall has offered to bring our requests to the legislature at the end of May to formally present it to the Minister. The ferry crew has said that although the contract may be settled before that, there is a ninety day period which it is not set in stone. So, our ferry issue isn't sunk yet (no more bad humour, I promise) and we still may have some hope for this time around.
I am going to present Michelle Mungall with the petition as well as a clear statement on what our needs are without any cost overruns so if any of you have any questions or remarks before I hand those documents in at the end of next week, feel free to contact me at thesoapstone@theeastshore.net.
Send out the good water ferries vibe!


text:
/**
 *
  Package: MAG - VistA Imaging
  WARNING: Per VHA Directive 2004-038, this routine should not be modified.
  Date Created: May 2, 2008
  Site Name:  Washington OI Field Office, Silver Spring, MD
  Developer:  VHAISWWERFEJ
  Description:

        ;; +--------------------------------------------------------------------+
        ;; Property of the US Government.
        ;; No permission to copy or redistribute this software is given.
        ;; Use of unreleased versions of this software requires the user
        ;;  to execute a written test agreement with the VistA Imaging
        ;;  Development Office of the Department of Veterans Affairs,
        ;;  telephone (301) 734-0100.
        ;;
        ;; The Food and Drug Administration classifies this software as
        ;; a Class II medical device.  As such, it may not be changed
        ;; in any way.  Modifications to this software may result in an
        ;; adulterated medical device under 21CFR820, the use of which
        ;; is considered to be a violation of US Federal Statutes.
        ;; +--------------------------------------------------------------------+

 */
package gov.va.med.imaging.conversion;

import gov.va.med.imaging.conversion.enums.ImageConversionSatisfaction;
import gov.va.med.imaging.core.interfaces.IImageConversionConfiguration;
import gov.va.med.imaging.core.interfaces.ImageStorageFacade;
import gov.va.med.imaging.core.interfaces.StorageCredentials;
import gov.va.med.imaging.core.interfaces.exceptions.ConnectionException;
import gov.va.med.imaging.core.interfaces.exceptions.ImageConversionException;
import gov.va.med.imaging.core.interfaces.exceptions.ImageNearLineException;
import gov.va.med.imaging.core.interfaces.exceptions.ImageNotFoundException;
import gov.va.med.imaging.core.interfaces.exceptions.MethodException;
import gov.va.med.imaging.exchange.business.ImageFormatAllowableConversionList;
import gov.va.med.imaging.exchange.business.ImageFormatQuality;
import gov.va.med.imaging.exchange.business.ImageFormatQualityList;
import gov.va.med.imaging.exchange.business.ImageStreamResponse;
import gov.va.med.imaging.exchange.conversion.exceptions.ImageConversionCompressionException;
import gov.va.med.imaging.exchange.conversion.exceptions.ImageConversionDecompressionException;
import gov.va.med.imaging.exchange.conversion.exceptions.ImageConversionIOException;
import gov.va.med.imaging.exchange.conversion.exceptions.ImageConversionInvalidInputException;
import gov.va.med.imaging.exchange.conversion.interfaces.IImageConversion;
import gov.va.med.imaging.exchange.enums.ImageFormat;
import gov.va.med.imaging.exchange.enums.ImageQuality;
import gov.va.med.imaging.exchange.enums.StorageProximity;
import gov.va.med.imaging.exchange.storage.ByteBufferBackedImageInputStream;
import gov.va.med.imaging.exchange.storage.ByteBufferBackedImageStreamResponse;
import gov.va.med.imaging.exchange.storage.ByteBufferBackedInputStream;
import gov.va.med.imaging.exchange.storage.ByteBufferBackedObject;
import gov.va.med.imaging.transactioncontext.TransactionContext;
import gov.va.med.imaging.transactioncontext.TransactionContextFactory;
import gov.va.med.imaging.url.vista.StringUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.SequenceInputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;

/**
 * Image conversion utility does the work of determining what the stored image type is, what
 * it can be converted into and then actually calling the image conversion methods to
 * convert the image.
 *
 * @author VHAISWWERFEJ
 *
 */
public class ImageConversionUtility
{
	private final static Logger logger = Logger.getLogger(ImageConversionUtility.class);
	private final ImageStorageFacade storageFacade;
	private final ImageConversionSatisfaction conversionSatisfaction;
	private final boolean updateDicomHeaders;

	/**
	 * Create a new image conversion utility for converting a stored image into the format requested by the user
	 *
	 * @param imageStorageFacade The storage facade knows how to open the file needed.
	 * @param conversionSatisfaction Image conversion satisfaction level for this image conversion utility
	 * @param updateDicomHeaders Determines if the DICOM header should be updated for images that are stored in DICOM
	 */
	public ImageConversionUtility(ImageStorageFacade imageStorageFacade,
			ImageConversionSatisfaction conversionSatisfaction,
			boolean updateDicomHeaders)
	{
		super();
		this.storageFacade = imageStorageFacade;
		this.conversionSatisfaction = conversionSatisfaction;
		this.updateDicomHeaders = updateDicomHeaders;
	}

	private IImageConversion getImageConversion()
	{
		return ImageConversionFactory.getImageConversion();
	}

	private IImageConversionConfiguration getImageConfiguration()
	{
		return ImageConversionFactory.getImageConversionConfiguration();
	}

	/**
	 * Retrieves the image from the list of file paths using the specified format quality list and credentials
	 * @param files
	 * @param requestFormatQualityList The list of file formats to use when requesting the image
	 * @param convertFormatQualityList The list of file formats the image can be returned
	 * 	in - if the image is requested in a format not included in this list, then the image must be converted
	 * @param txtFileAvailable This determines if the image conversion will attempt to download the TXT file, this value
	 * 	has no impact if the TXT file is necessary to generate a DICOM image. This is only used if the TXT file might be
	 * 	included in the result (not for conversion)
	 * @return A stream to the opened image
	 * @throws ImageNearLineException
	 * @throws ImageNotFoundException
	 * @throws ImageConversionException
	 * @throws ConnectionException
	 */
	public ImageStreamResponse getImage(List<ImageConversionFilePath> files,
			ImageFormatQualityList requestFormatQualityList,
			ImageFormatQualityList convertFormatQualityList,
			boolean txtFileAvailable)
	throws ImageNearLineException, ImageNotFoundException, ImageConversionException,
	ConnectionException, MethodException
	{
		return getImage(files, requestFormatQualityList, convertFormatQualityList,
				txtFileAvailable, null);
	}

	/**
	 * Retrieves the image from the list of file paths using the specified format quality list and credentials
	 * @param files
	 * @param requestFormatQualityList The list of file formats to use when requesting the image
	 * @param convertFormatQualityList The list of file formats the image can be returned
	 * 	in - if the image is requested in a format not included in this list, then the image must be converted
	 * @param txtFileAvailable This determines if the image conversion will attempt to download the TXT file, this value
	 * 	has no impact if the TXT file is necessary to generate a DICOM image. This is only used if the TXT file might be
	 * 	included in the result (not for conversion)
	 * @param storageCredentials The credentials used to access the storage device for the files
	 * @return A stream to the opened image
	 * @throws ImageNearLineException
	 * @throws ImageNotFoundException
	 * @throws ImageConversionException
	 * @throws ConnectionException
	 */
	public ImageStreamResponse getImage(List<ImageConversionFilePath> files,
			ImageFormatQualityList requestFormatQualityList,
			ImageFormatQualityList convertFormatQualityList,
			boolean txtFileAvailable,
			StorageCredentials storageCredentials)
	throws ImageNearLineException, ImageNotFoundException, ImageConversionException,
	ConnectionException, MethodException
	{
		return getImage(files, requestFormatQualityList, convertFormatQualityList,
				txtFileAvailable, storageCredentials, null);
	}

	/**
	 * Retrieves the image from the list of file paths using the specified format quality list and credentials
	 * @param files
	 * @param requestFormatQualityList The list of file formats to use when requesting the image
	 * @param convertFormatQualityList The list of file formats the image can be returned
	 * 	in - if the image is requested in a format not included in this list, then the image must be converted
	 * @param txtFileAvailable This determines if the image conversion will attempt to download the TXT file, this value
	 * 	has no impact if the TXT file is necessary to generate a DICOM image. This is only used if the TXT file might be
	 * 	included in the result (not for conversion)
	 * @param storageCredentials The credentials used to access the storage device for the files
	 * @param hisUpdate The HIS update from the database
	 * @return
	 * @throws ImageNearLineException
	 * @throws ImageNotFoundException
	 * @throws ImageConversionException
	 * @throws ConnectionException
	 */
	public ImageStreamResponse getImage(List<ImageConversionFilePath> files,
			ImageFormatQualityList requestFormatQualityList,
			ImageFormatQualityList convertFormatQualityList,
			boolean txtFileAvailable,
			StorageCredentials storageCredentials, HashMap<String, String> hisUpdate)
	throws ImageNearLineException, ImageNotFoundException, ImageConversionException,
	ConnectionException, MethodException
	{
		try
		{
			for(ImageConversionFilePath filePath : files)
			{
				ImageStreamResponse response = retrieveAndCompressImage(filePath,
						requestFormatQualityList, convertFormatQualityList,
						txtFileAvailable, storageCredentials, hisUpdate);
				if(response != null)
					return response;
			}
			return null;
		}
		finally
		{
			if(storageFacade != null)
			{
				// be sure to clear the buffers when done with the conversion (always clear them)
				storageFacade.clearBuffers();
			}
		}
	}

	private ImageStreamResponse retrieveAndCompressImage(ImageConversionFilePath filePath,
			ImageFormatQualityList requestFormatQualityList,
			ImageFormatQualityList convertFormatQualityList,
			boolean txtFileAvailable,
			StorageCredentials storageCredentials, HashMap<String, String> hisUpdate)
	throws ImageNearLineException, ImageNotFoundException, ImageConversionException,
	ConnectionException, MethodException
	{
		// just to be sure everything is clean
		//returnBuffers();
		try
		{
			String imageFilename = filePath.getFilePath();
			logger.info("Opening input stream to image [" + imageFilename + "]");

			if(imageFilename.startsWith("."))
			{
				logger.error("Image starts with a '.', cannot access or retrieve canned images from accelerator");
				return null;
			}
			TransactionContext transactionContext = TransactionContextFactory.get();
			transactionContext.addDebugInformation("Opening image with path '" + imageFilename + "'.");
			ByteBufferBackedImageStreamResponse response = storageFacade.openImageStream(imageFilename,
					storageCredentials, filePath.getStorageProximity(), requestFormatQualityList);
			ImageFormat storedFormat = response.getImageFormat();

			ImageQuality storedQuality = response.getImageQuality();
			if(storedQuality == null)
				storedQuality = filePath.getImageQuality();
			if(response.getImageQuality() == null)
				response.setImageQuality(storedQuality);

			if(storedFormat != null)
			{
				transactionContext.setDataSourceImageFormatReceived(storedFormat.toString());
			}
			if(storedQuality != null)
			{
				transactionContext.setDataSourceImageQualityReceived(storedQuality.toString());
			}

			// special case if we can't determine the format of the file, just want to return it if allowed
			if(storedFormat == ImageFormat.ORIGINAL)
			{
				logger.info("Unable to determine the format of file [" + imageFilename + "]");
				if(requestAllowsOriginalImageType(convertFormatQualityList))
				{
					logger.info("Unknown format is allowed because [ORIGINAL] is in request, returning ORIGINAL image format");
					// want to set the image quality in the response also...
					// do anything special if incorrect image quality? probably can't!
					if(response.getImageQuality() == null)
						response.setImageQuality(storedQuality);
					if((storedQuality != ImageQuality.THUMBNAIL) &&
							(response.getTxtStream() == null) && (!ImageFormat.isDICOMFormat(response.getImageFormat()))
							&& (txtFileAvailable))
					{
						ByteBufferBackedInputStream txtStream =
							getTxtStreamHandleException(imageFilename, storageCredentials, hisUpdate);
						response.setTxtStream(txtStream);
						// can't do the DICOM header update since we don't know what the format of the image is
					}
					return response;
				}
			}

			Iterator<ImageFormatQuality> qualitiesIterator = convertFormatQualityList.iterator();
			boolean canCompressStoredFormat = canCompressFormat(storedFormat);

			// if satisfy top request is false then try to just return the output if possible
			// we would want to just return the data without converting it if it matches the
			// requested formats
			//if(!isSatisfyTopRequest())
			if(conversionSatisfaction == ImageConversionSatisfaction.SATISFY_ANY_REQUEST)
			{
				logger.info("Checking to see if image in format [" + storedFormat + "] can be returned in current format");
				if(isStoredFormatInRequest(convertFormatQualityList, storedFormat, storedQuality))
				{
					logger.info("Image in format [" + storedFormat + "] and can be returned in this format, returning");
					if(response.getImageQuality() == null)
						response.setImageQuality(storedQuality);
					if(storedQuality != ImageQuality.THUMBNAIL)
					{
						setImageStreamResponseTextFileIfNecessary(response, storedFormat, imageFilename,
								storageCredentials, hisUpdate, txtFileAvailable);
						if((ImageFormat.isDICOMFormat(storedFormat)) && (updateDicomHeaders))
						{
							// if DICOM then try to update the DICOM header with the latest values
							return updateDICOMHeaderHandleExceptions(response, storedFormat, storedQuality);
						}
					}
					return response;
				}
			}
			else if(conversionSatisfaction == ImageConversionSatisfaction.SATISFY_ALLOWED_COMPRESSION)
			{
				// if the image is stored in a compressed format and that format is in the requested format list
				// then the image can be returned regardless of where it is in the list.
				if(storedFormat.isCompressed())
				{
					logger.info("Image is stored in format [" + storedFormat + "] which is compressed, checking to see if image can be returned in this format");
					if(isStoredFormatInRequest(convertFormatQualityList, storedFormat, storedQuality))
					{
						logger.info("Image in format [" + storedFormat + "] and can be returned in this format, returning");
						if(response.getImageQuality() == null)
							response.setImageQuality(storedQuality);
						if(storedQuality != ImageQuality.THUMBNAIL)
						{
							setImageStreamResponseTextFileIfNecessary(response, storedFormat,
									imageFilename, storageCredentials, hisUpdate, txtFileAvailable);
							if((ImageFormat.isDICOMFormat(storedFormat)) && (updateDicomHeaders))
							{
								// if DICOM then try to update the DICOM header with the latest values
								return updateDICOMHeaderHandleExceptions(response, storedFormat, storedQuality);
							}
						}
						return response;
					}
				}
			}
			ImageFormatQuality quality = getNextAllowableImageFormatQuality(storedFormat, qualitiesIterator);

			while(quality != null)
			{
				logger.info("Attempting to generate image of type '" + quality.getImageFormat() + "'.");
				if(((storedFormat == quality.getImageFormat()) ||
						(quality.getImageFormat() == ImageFormat.ORIGINAL))
						&& ((storedQuality == quality.getImageQuality()) ||
								(!canCompressStoredFormat)))
				{
					logger.info("Image format [" + storedFormat + "] matches request format, returning image");
					if(response.getImageQuality() == null)
						response.setImageQuality(quality.getImageQuality());
					if(quality.getImageQuality() != ImageQuality.THUMBNAIL)
					{
						setImageStreamResponseTextFileIfNecessary(response, storedFormat,
								imageFilename, storageCredentials, hisUpdate, txtFileAvailable);
						if((ImageFormat.isDICOMFormat(storedFormat)) && (updateDicomHeaders))
						{
							// if DICOM then try to update the DICOM header with the latest values
							return updateDICOMHeaderHandleExceptions(response, storedFormat, storedQuality);
						}
					}
					return response;
				}

				// if the original file type is not in the right quality but the current conversion
				// is "original", then just return what we have. Original should always happen last
				// so this is a last resort and the user said they could handle the original format
				if(quality.getImageFormat() == ImageFormat.ORIGINAL)
				{
					logger.info("Image is in format [" + storedFormat + "] and [ORIGINAL] can be returned, returning stored image");
					if(response.getImageQuality() == null)
						response.setImageQuality(storedQuality);
					if(quality.getImageQuality() != ImageQuality.THUMBNAIL)
					{
						setImageStreamResponseTextFileIfNecessary(response, storedFormat, imageFilename,
								storageCredentials, hisUpdate, txtFileAvailable);
						if((ImageFormat.isDICOMFormat(storedFormat)) && (updateDicomHeaders))
						{
							// if DICOM then try to update the DICOM header with the latest values
							return updateDICOMHeaderHandleExceptions(response, storedFormat, storedQuality);
						}
					}
					return response;
				}

				// if we get to here, we have to do a conversion, put it into the buffer?

				// at this point we know we need to do some conversion, so make sure the image
				// is in a buffer in case we need to reuse it.

				// no longer need to put into buffer, will be handled internally (right?)

				//response = storageFacade.putStreamIntoBuffer(imageFilename, response);

				logger.info("Able to convert from [" + storedFormat + "] to [" + quality.getImageFormat() + "]");
				transactionContext.addDebugInformation("Converting from '" + storedFormat + "' to '" + quality.getImageFormat() + "'.");
				try
				{
					// if requested quality format is DICOM then we need the TXT file before we call compress and convert (to build the header)
					if(ImageFormat.isDICOMFormat(quality.getImageFormat()))
					{
						if(isDecompress(storedFormat, quality.getImageFormat()))
						{
							ImageStreamResponse convertedResponse = decompressImage(response, quality);
							if(convertedResponse != null)
							{
								return convertedResponse;
							}
						}
						else
						{
							// do conversion
							if(response.getTxtStream() == null)
							{
								ByteBufferBackedInputStream txtStream =
									getTxtStreamHandleException(imageFilename, storageCredentials, hisUpdate);
								response.setTxtStream(txtStream);
							}
							ImageStreamResponse convertedResponse = compressAndConvertImage(response, quality);
							if(convertedResponse != null)
							{
								return convertedResponse;
							}
						}
					}
					else
					{
						// check to see if should do a decompression rather than compression
						if(isDecompress(storedFormat, quality.getImageFormat()))
						{
							// not creating a DICOM file so only doing compression, return TXT file after making the image
							ImageStreamResponse convertedResponse = decompressImage(response, quality);
							if(convertedResponse != null)
							{
								if((quality.getImageQuality() != ImageQuality.THUMBNAIL)
										&& (convertedResponse.getTxtStream() == null)
										&& (!ImageFormat.isDICOMFormat(response.getImageFormat())))
								{
									ByteBufferBackedInputStream txtStream =
										getTxtStreamHandleException(imageFilename, storageCredentials, hisUpdate);
									convertedResponse.setTxtStream(txtStream);
								}
								return convertedResponse;
							}
						}
						else
						{
							String modality = null;
							// only get the modality if the requested quality is not thumbnail
							if(quality.getImageQuality() != ImageQuality.THUMBNAIL)
							{
								// get modality code from TXT file for non-DICOM compression
								ByteBufferBackedInputStream txtStream = response.getTxtStream();
								if(txtStream == null)
									txtStream = getTxtStreamHandleException(imageFilename, storageCredentials, hisUpdate);
								modality = getTXTModality(txtStream); // get modality code and close partially consumed stream!
							}
							// not creating a DICOM file so only doing compression, return TXT file after making the image
							ImageStreamResponse convertedResponse = compressImage(imageFilename, response, quality, modality);
							if(convertedResponse != null)
							{
								if((quality.getImageQuality() != ImageQuality.THUMBNAIL)
										&& (convertedResponse.getTxtStream() == null)
										&& (!ImageFormat.isDICOMFormat(response.getImageFormat()))
										&& (txtFileAvailable))
								{
									ByteBufferBackedInputStream txtStream =
										getTxtStreamHandleException(imageFilename, storageCredentials, hisUpdate);
									convertedResponse.setTxtStream(txtStream);
								}
								return convertedResponse;
							}
						}
					}
				}
				catch(ImageConversionDecompressionException icdX)
				{
					logger.error("Decompression error during converting image [" + imageFilename + "]", icdX);
					transactionContext.addDebugInformation("ImageConversionDecompressionException converting image, " + icdX.getMessage() + ".");
				}
				catch(ImageConversionCompressionException iccX)
				{
					logger.error("Compression error during converting image [" + imageFilename + "]", iccX);
					transactionContext.addDebugInformation("ImageConversionCompressionException converting image, " + iccX.getMessage() + ".");
				}
				catch(ImageConversionIOException icioX)
				{
					logger.error("IO error during converting image [" + imageFilename + "]", icioX);
					transactionContext.addDebugInformation("ImageConversionIOException converting image, " + icioX.getMessage() + ".");
				}
				catch(ImageConversionInvalidInputException iciiX)
				{
					logger.error("Input data error during converting image [" + imageFilename + "]", iciiX);
					transactionContext.addDebugInformation("ImageConversionInvalidInputException converting image, " + iciiX.getMessage() + ".");
				}
				catch(IOException ioX)
				{
					logger.error("IOException while converting image [" + imageFilename + "]", ioX);
					transactionContext.addDebugInformation("IOException converting image, " + ioX.getMessage() + ".");
				}

				logger.info("Not able to convert from [" + storedFormat + "] to [" + quality.getImageFormat() + "], trying next conversion option");
				// its not necessary to close the input stream, if we got here then we tried to do conversions
				// which means the image was buffered so the buffering handled closing the input streams
				logger.info("Re-opening image stream");
				// not really sure if this is necessary anymore
				response = storageFacade.openImageStream(imageFilename,
						storageCredentials, StorageProximity.OFFLINE, requestFormatQualityList);
				storedFormat = response.getImageFormat();
				storedQuality = response.getImageQuality();
				if(storedQuality == null)
					storedQuality = filePath.getImageQuality();
				if(response.getImageQuality() == null)
					response.setImageQuality(storedQuality);
				quality = getNextAllowableImageFormatQuality(storedFormat, qualitiesIterator);

			}
			// if we got here then we couldn't do anything to the image to satisfy the request
			String msg = "Couldn't perform acceptable [" + storedFormat +
			"] data conversion to match requested format(s) [" + convertFormatQualityList.getAcceptString(false) + "]";
			//logger.info(, throwing ImageConversionException");
			logger.error(msg);
			logger.info("Closing possibly still open image and TXT streams");
			if(response.getImageStream() != null)
				response.getImageStream().closeSafely();
			if(response.getTxtStream() != null)
				response.getTxtStream().closeSafely();
			throw new ImageConversionException(msg);
		}
		finally
		{
			//returnBuffers();
		}
	}

	/**
	 * This method parses an opened TXT file stream for DICOM Modality code.
	 * Before returning the modality code the partially read stream is closed.
	 * @param txtstream
	 * 			A sized InputStream referring to TXT stream and its length
	 * @throws ImageConversionIOException
	 */
	private String getTXTModality(ByteBufferBackedInputStream txtStream) {
		String mty="";
	    String textLine = "";
	    int bytesRead=0;
		if ((txtStream == null) || (!txtStream.isReadable()))
			return mty;
		try
		{
			int fsize = txtStream.getSize();
			if (fsize > 0) {
		            BufferedReader buffer = new BufferedReader(new InputStreamReader(txtStream.getInputStream()));
		            do{// parse for "MODALITY=" or "Modality|1,1|" and take the next 2 bytes
		                do{ // get next line
		                	if (bytesRead >= fsize)
		                		return mty;
		                    textLine = buffer.readLine();
			                if(textLine == null) // EOF
		                        return mty;
			                bytesRead += textLine.length();
		                } while (textLine.equals(""));
		            } while( !((textLine.startsWith("MODALITY")) || (textLine.startsWith("0008,0060|Modality"))) );
		            if (textLine.startsWith("MODALITY"))
		            	mty=textLine.substring(textLine.indexOf("=")+1);
		            else
		            	mty=textLine.substring(textLine.lastIndexOf("|")+1);
			}
		}
		catch (IOException ioX) {
			logger.error("Error extracting Modality code from TXT stream", ioX);
		}
		finally
		{
			txtStream.closeSafely();
		}
		return mty;
	}

	private boolean canCompressFormat(ImageFormat imageFormat)
	{
		if(imageFormat == null)
			return false;
		ImageFormatAllowableConversionList conversionList = getImageConfiguration().getFormatConfiguration(imageFormat);
		if(conversionList == null)
			return false;
		return conversionList.isCanCompress();
	}

	/**
	 * Retrieves a TXT stream from the storage facade.
	 *
	 * @param imageFilename
	 * @param storageCredentials
	 * @param hisUpdate Hashmap containing name/value pairs of the HIS update of patient data.
	 * @return
	 */
	public ByteBufferBackedInputStream GetTxtStream(String imageFilename, StorageCredentials storageCredentials,
			HashMap<String, String> hisUpdate)
	throws ImageNotFoundException, ImageNearLineException, ConnectionException, MethodException
	{
		logger.info("Opening stream to TXT file for image [" + imageFilename + "]");
		ByteBufferBackedInputStream txtStream = storageFacade.openTXTStream(imageFilename,
				storageCredentials, null);
		logger.info("Got stream to TXT file for image [" + imageFilename + "]");
		return appendTxtStreamWithHisUpdate(txtStream, hisUpdate);
	}

	private ByteBufferBackedInputStream getTxtStreamHandleException(String imageFilename,
			StorageCredentials storageCredentials, HashMap<String, String> hisUpdate)
	{
		try
		{
			return GetTxtStream(imageFilename, storageCredentials, hisUpdate);
		}
		catch(ImageNotFoundException infX)
		{
			logger.error("TXT File for image [" + imageFilename + "] not found", infX);
		}
		catch(ImageNearLineException inlX)
		{
			logger.error("TXT File for image [" + imageFilename + "] nearline exception", inlX);
		}
		catch(ConnectionException cX)
		{
			logger.error("TXT File for image [" + imageFilename + "] connection exception", cX);
		}
		catch(MethodException mX)
		{
			logger.error("TXT File for image [" + imageFilename + "] method exception", mX);
		}
		return null;
	}

	private ByteBufferBackedInputStream appendTxtStreamWithHisUpdate(ByteBufferBackedInputStream txtStream,
			HashMap<String, String> hisUpdate)
	{
		/*
		if((hisUpdate == null) || (hisUpdate.size() <= 0))
			return txtStream;
		 */
		int bytesRead = 0;

		StringBuilder sb = new StringBuilder();

		sb.append("$$BEGIN HIS UPDATE");
		sb.append("\n");

		String lastKey = "";
		int keyCount = 1;
		if(hisUpdate != null)
		{
			Set<Map.Entry<String, String>> entries = hisUpdate.entrySet();
			for(Entry<String, String> entry : entries)
			{
				String key = entry.getKey();
				if(key.equals(lastKey))
				{
					keyCount++;
				}

				String line = key + StringUtils.STICK + StringUtils.STICK + keyCount + ",1" + StringUtils.STICK + entry.getValue();
				lastKey = key;
				sb.append(line + "\n");
			}
		}
		sb.append("$$END HIS UPDATE\n");
		bytesRead = sb.length();
		InputStream hisStream = IOUtils.toInputStream(sb.toString());

		ByteBufferBackedInputStream sizedStream = null;
		if(txtStream == null)
		{
			logger.info("appendTxtStreamWithHisUpdate, txt stream is null, returning stream containing only HIS update");
			sizedStream = new ByteBufferBackedInputStream(hisStream, bytesRead);
		}
		else
		{
			logger.info("Combining HIS stream with TXT stream");
			InputStream textInputStream = txtStream.getInputStream();
			SequenceInputStream seqStream = new SequenceInputStream(textInputStream, hisStream);
			logger.info("HIS Stream has been joined with TXT stream");
			sizedStream = new ByteBufferBackedInputStream(seqStream, bytesRead + txtStream.getSize());
		}
		return sizedStream;
	}

	/**
	 * Open the TXT file stream
	 * @param txtFilename The txt file to open
	 * @param storageCredentials the storage credentials used to access the image share
	 * @return The input stream to the file
	 * @throws ImageNotFoundException Occurs if the file is not found or accessible
	 * @throws ImageNearLineException Occurs if the file is not accessible but is on a nearline storage device
	 */
	/*
	private SizedInputStream getTXTStream(String txtFilename, StorageCredentials storageCredentials)
	throws ImageNotFoundException, ImageNearLineException
	{
		return SmbStorageUtility.openFileStream(txtFilename, storageCredentials, StorageProximity.OFFLINE);
	}
	 */

	/**
	 * Returns the next allowable image format quality for the stored format.
	 * @param storedFormat the format of the stored image
	 * @param qualitiesIterator The iterator of the qualities requested by the user
	 * @return An image format quality that was requested by the client and is allowable for the stored image format.
	 * Returns null if no format can be found that is allowed for the stored format
	 */
	private ImageFormatQuality getNextAllowableImageFormatQuality(ImageFormat storedFormat,
			Iterator<ImageFormatQuality> qualitiesIterator)
	{
		logger.info("Finding next allowable conversion type for format [" + storedFormat + "]");
		ImageFormatAllowableConversionList formatAllowedList = getImageConfiguration().getFormatConfiguration(storedFormat);
		// if the list of allowable conversions is null, then no definitions for this format type
		// returning false to not allow the conversion, not sure if that is correct?
		if(formatAllowedList == null)
		{
			// JMW 2/21/2011 if the image format is not in the configuration file, then simply indicate it can
			// be converted into itself so if the user allows anything, it can be returned
			//logger.warn("List of allowed formats to convert to is null, returning null");
			logger.warn("List of allowed formats to convert '" + storedFormat + "' is null, not found in configuration file. Creating list only containing this format");
			formatAllowedList = new ImageFormatAllowableConversionList(storedFormat, false);
			// JMW 6/25/2013 - add this format as an allowed format to convert to (convert from self to self)
			formatAllowedList.add(storedFormat);
			//return null;
		}
		while(qualitiesIterator.hasNext())
		{
			ImageFormatQuality quality = qualitiesIterator.next();

			if((quality.getImageFormat() == ImageFormat.ORIGINAL) ||
					(formatAllowedList.isFormatConversionAllowed(quality.getImageFormat())))
			{
				logger.info("Found allowed and requested format [" + quality.getImageFormat() + "]");
				return quality;
			}
		}
		logger.info("Could not find any more formats to convert [" + storedFormat + "] into");
		return null;
	}

	/**
	 * Determines if the stored format is compressed and the target format is not compressed.
	 *
	 * @param storedFormat
	 * @param targetFormat
	 * @return True if the stored format is compressed and target format is not compressed, false otherwise
	 */
	private boolean isDecompress(ImageFormat storedFormat, ImageFormat targetFormat)
	{
		if((storedFormat.isCompressed())
				&& (!targetFormat.isCompressed()))
		{
			return true;
		}
		return false;
	}

	private ByteBufferBackedImageStreamResponse decompressImage(ByteBufferBackedImageStreamResponse storedImage,
			ImageFormatQuality quality)
	throws ImageConversionInvalidInputException, ImageConversionIOException,
	ImageConversionDecompressionException, IOException
	{
		ImageFormat storedFormat = storedImage.getImageFormat();
		ImageFormat targetFormat = quality.getImageFormat();
		logger.info("decompress from [" + storedFormat + "] to [" + targetFormat + "]");
		ImageQuality imageQuality = quality.getImageQuality();
		IImageConversion conversion = getImageConversion();

		ByteBufferBackedImageInputStream outStream =
			conversion.DecompressImage(storedFormat, targetFormat, storedImage.getImageStream().toBufferedObject());
		return new ByteBufferBackedImageStreamResponse(outStream, imageQuality);
	}

	private ByteBufferBackedImageStreamResponse compressImage(String imageFilename,
			ByteBufferBackedImageStreamResponse storedImage, ImageFormatQuality quality, String modality)
	throws ImageConversionDecompressionException, ImageConversionIOException,
	ImageConversionInvalidInputException, ImageConversionCompressionException,
	IOException
	{
		ImageFormat storedFormat = storedImage.getImageFormat();
		ImageFormat targetFormat = quality.getImageFormat();
		logger.info("compress from [" + storedFormat + "] to [" + targetFormat + "]");

		ImageQuality imageQuality = quality.getImageQuality();
		IImageConversion conversion = getImageConversion();

		ByteBufferBackedImageInputStream outStream = conversion.CompressImage(imageQuality, storedFormat,
				targetFormat, storedImage.getImageStream().toBufferedObject(), modality);
		return new ByteBufferBackedImageStreamResponse(outStream, imageQuality);
	}

	/**
	 * This updates the DICOM header of an existing image that was not converted. This ensures the header
	 * for the image is correct and up to date.
	 * @param storedImage
	 * @param storedFormat
	 * @param imageQuality
	 * @return
	 * @throws ImageConversionDecompressionException
	 * @throws ImageConversionIOException
	 * @throws ImageConversionInvalidInputException
	 * @throws ImageConversionCompressionException
	 */
	private ByteBufferBackedImageStreamResponse updateDICOMHeader(ByteBufferBackedImageStreamResponse storedImage,
			ImageFormat storedFormat, ImageQuality imageQuality)
	throws ImageConversionDecompressionException, ImageConversionIOException,
	ImageConversionInvalidInputException, ImageConversionCompressionException,
	IOException
	{
		// JMW 4/18/20111 P104 - Laurel Bridge 3.3.22c fix makes it possible for us to
		// update the header in DICOM JPG images properly - they are no longer excluded

		// JMW 12/23/2010 p104 - the image conversion code has trouble updating DICOM JPG image headers
		// avoid issues and just don't bother updating them
		/*
		if(storedFormat == ImageFormat.DICOMJPEG)
		{
			logger.warn("Image stored in DICOMJPEG format, not able to update DICOM header for this format, returning image as stored.");
			return storedImage;
		}*/

		logger.info("Update header of stored format [" + storedFormat + "]");
		IImageConversion conversion = getImageConversion();
		ByteBufferBackedImageInputStream outStream =
			conversion.UpdateVAImage(storedFormat, storedImage.getImageStream().toBufferedObject(),
					storedImage.getTxtStream().toBufferedObject());
		return new ByteBufferBackedImageStreamResponse(outStream, imageQuality);
	}

	/**
	 * This method updates the DICOM image and handles any exceptions. This should always return the image although it might
	 * be the original image unchanged
	 *
	 * @param storedImage
	 * @param storedFormat
	 * @param imageQuality
	 * @return
	 */
	private ImageStreamResponse updateDICOMHeaderHandleExceptions(ByteBufferBackedImageStreamResponse storedImage,
			ImageFormat storedFormat, ImageQuality imageQuality)
	{
		// if DICOM then try to update the DICOM header with the latest values
		try
		{
			logger.info("Image is in DICOM format, updating DICOM header with TXT file and HIS updates");
			ImageStreamResponse updatedResponse = updateDICOMHeader(storedImage, storedFormat, imageQuality);
			if(updatedResponse == null)
				logger.error("Response from updating DICOM header was null, this should NEVER happen!");
			else
				return updatedResponse;
			// if got to here then the result was null (shouldn't happen),
			// but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything
		}
		catch(IOException ioX)
		{
			logger.error("IOException updating DICOM header, " + ioX.getMessage() + ". Will return image as stored.");
			// exception occurred but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything, we can just return that
		}
		catch(ImageConversionDecompressionException icdX)
		{
			logger.error("ImageConversionDecompressionException updating DICOM header, " + icdX.getMessage() + ". Will return image as stored.");
			// exception occurred but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything, we can just return that
		}
		catch(ImageConversionCompressionException iccX)
		{
			logger.error("ImageConversionCompressionException updating DICOM header, " + iccX.getMessage() + ". Will return image as stored.");
			// exception occurred but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything, we can just return that
		}
		catch(ImageConversionInvalidInputException iciiX)
		{
			logger.error("ImageConversionInvalidInputException updating DICOM header, " + iciiX.getMessage() + ". Will return image as stored.", iciiX);
			// exception occurred but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything, we can just return that
		}
		catch(ImageConversionIOException icioX)
		{
			logger.error("ImageConversionIOException updating DICOM header, " + icioX.getMessage() + ". Will return image as stored.");
			// exception occurred but the current response object should still contain the image and text
			// file (since it was buffered), so it shouldn't have to do anything, we can just return that
		}
		return storedImage;
	}

	private void setImageStreamResponseTextFileIfNecessary(ByteBufferBackedImageStreamResponse storedImage,
			ImageFormat storedFormat, String imageFilename, StorageCredentials storageCredentials,
			HashMap<String, String> hisUpdate, boolean txtFileAvailable)
	{
		if((storedImage.getTxtStream() == null) && (txtFileAvailable))
		{
			boolean getTextFile = false;
			if(ImageFormat.isDICOMFormat(storedFormat))
			{
				if(updateDicomHeaders)
				{
					getTextFile = true;
				}
			}
			else
			{
				getTextFile = true;
			}
			if(getTextFile)
			{
				ByteBufferBackedInputStream txtStream = getTxtStreamHandleException(imageFilename,
						storageCredentials, hisUpdate);
				storedImage.setTxtStream(txtStream);
			}
		}
	}

	/**
	 * This method is for compressing and converting images into DICOM
	 * @param storedImage
	 * @param quality
	 * @return
	 * @throws ImageConversionDecompressionException
	 * @throws ImageConversionIOException
	 * @throws ImageConversionInvalidInputException
	 * @throws ImageConversionCompressionException
	 * @throws IOException
	 */
	private ImageStreamResponse compressAndConvertImage(ByteBufferBackedImageStreamResponse storedImage,
			ImageFormatQuality quality)
	throws ImageConversionDecompressionException, ImageConversionIOException,
	ImageConversionInvalidInputException, ImageConversionCompressionException,
	IOException
	{
		ImageFormat storedFormat = storedImage.getImageFormat();
		ImageFormat targetFormat = quality.getImageFormat();
		logger.info("compress and convert from [" + storedFormat + "] to [" + targetFormat + "]");

		if(storedFormat == targetFormat)
		{
			// the stored format is DICOM
			if(updateDicomHeaders)
			{
				logger.info("Stored format is the same as target format, updating DICOM header and returning image.");
				// if DICOM then try to update the DICOM header with the latest values
				return updateDICOMHeaderHandleExceptions(storedImage, storedFormat, quality.getImageQuality());
			}
			logger.info("Stored format is the same as target format, returning input.");
			return storedImage;
		}

		else if (targetFormat == ImageFormat.ORIGINAL)
		{
			logger.info("Target format is ORIGINAL, returning input");
			return storedImage;
		}
		ImageQuality imageQuality = quality.getImageQuality();
		IImageConversion conversion = getImageConversion();
		ByteBufferBackedObject txtObject = null;
		if(storedImage.getTxtStream() != null)
			txtObject = storedImage.getTxtStream().toBufferedObject();
		if(imageQuality == ImageQuality.THUMBNAIL)
		{

			ByteBufferBackedImageInputStream outStream = conversion.ConvertImage(storedFormat, targetFormat,
					imageQuality, storedImage.getImageStream().toBufferedObject(), txtObject);
			return new ByteBufferBackedImageStreamResponse(outStream, imageQuality);
		}
		else
		{
			ImageFormat convertFormat = targetFormat;
			/*
			 // JMW 9/4/2009 - no longer do this - VRad needs DICOM without doing J2K, requestor should know what they want!
			if((targetFormat == ImageFormat.DICOM)
					|| (targetFormat == ImageFormat.DICOMJPEG)
					|| (targetFormat == ImageFormat.DICOMJPEG2000))
			{
				logger.info("Request was for a DICOM type, changing to DICOM JPEG 2000");
				convertFormat = ImageFormat.DICOMJPEG2000;
			}*/
			ByteBufferBackedImageInputStream outStream = conversion.ConvertImage(storedFormat, convertFormat,
					imageQuality, storedImage.getImageStream().toBufferedObject(), txtObject);
			return new ByteBufferBackedImageStreamResponse(outStream, imageQuality);
		}
	}

	private boolean requestAllowsOriginalImageType(ImageFormatQualityList requestFormatQualityList)
	{
		if(requestFormatQualityList == null)
			return false;
		for(ImageFormatQuality quality : requestFormatQualityList)
		{
			if(quality.getImageFormat() == ImageFormat.ORIGINAL)
				return true;
		}
		return false;
	}

	private boolean isStoredFormatInRequest(ImageFormatQualityList requestFormatQualityList,
			ImageFormat storedFormat, ImageQuality storedQuality)
	{
		if(requestFormatQualityList == null)
			return false;
		for(ImageFormatQuality quality : requestFormatQualityList)
		{
			// JMW 1/26/2009 - change to this function, used to compare format and quality directly
			// now, if format is the same and storedQuality >= quality, then return true
			// quality must be better than or equal to to be true.
			if(quality.getImageFormat() == storedFormat)
			{
				if(quality.getImageQuality().getCanonical() <= storedQuality.getCanonical())
					return true;
			}
		}
		return false;
	}

	/*
	private StorageProximity getStorageProximityFromVistaLocation(String imgLocation)
	{
		if(IMAGE_LOCATION_MAGNETIC.equals(imgLocation))
		{
			return StorageProximity.ONLINE;
		}
	}
	 */
}

redpajama_set_name: RedPajamaGithub


– I Meeting of the Graduate Programs in Intellectual Property and Technology Transfer for Technological Innovation and Development.
– I Brazilian Forum of Data Science, Tech Mining and Innovation (3rd fair, from 9am to 6pm).
– Local Innovation Systems Planning.


Visit Seabury Solutions on Stand E37 at the Airline & Aerospace MRO & Flight Operations IT Conference APAC, Bangkok, Thailand 26th and 27th October 2016.
Shannon, Ireland. March 2015// Today Volartec (now Seabury MRO Solutions) unveiled the latest customer to select Alkym the cost effective maintenance management solution. INAEC Aviation Corporation recently signed a license agreement for Alkym Management and Control System for Aircraft Maintenance.


Greenpeace activists paint two gigantic cracks on the 32 year old nuclear reactor dome at Borssele, Netherlands. The Dutch government wants to keep the plant, one of the world's oldest, open beyond 2013, despite inherent safety and security risks.
Climate change is a priority issue for us here at Greenpeace. Disruptions to ecosystems will likely harm everything from minke whales to coral reefs to polar bears. Whole forests will be lost, and hundreds of thousands of species will become extinct. Climate change will bring devastation to people and communities, especially some of the world's poorest.
Certainly, a big part of our job is bringing home to people everywherethe realities of climate change and the struggle against it. To name names, protest corporations, shame governments - while helping make climate change solutions a reality.
Our expeditions document the impacts of climate change on people and ecosystems. Our professional negotiators, scientists and policy expertsattend world climate conferences and persuade decision makers to take action. Our volunteers and cyberactivists keep up the pressure on lawmakers and corporations. Our activists put their safety and freedom on the line for even the smallest chance to change the world.
Luckily enough, Greenpeace is itself only part of a much larger movement towards positive energy policy. We are fortunate to work with and beside many other environmental organisations, as well as many companies, governments and individuals who share our dedication, optimism and belief that there is a solution for every problem.
If you would like to be a part of this global movement, and like how wework, please choose to volunteer, sign up as a cyberactivst, and/orsupport us financially. For more ways to help see the Take Action page.
1 - 10 of 2035 results.


text:
Q: Null Pointer Except, but why? I'm getting a nullpointerexception when I run my program using these two methods:
public static String getType(int x)
{
    Contact_Type Type;
    String strType = "";

    Type = AddyBook.get(x).getContactType();
    strType = Type.toString ( );
    return strType;
}

public static String displayByType(String type)
{
    int i = 0;
    String strTypeList = "";

    if(type.equals(null))
        strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";
    while(i < AddyBook.size())
    {
        if(getType(i).equalsIgnoreCase(type))
        {
            strTypeList += getType(i);
            strTypeList += "\n";
        }
        i++;
    }
    return strTypeList;
}

The lines that I'm being pointed to are
strType = Type.toString ( );

and
if(getType(i).equalsIgnoreCase(type))

I'm also getting the exception in other methods that are identical except for the variable they're operating on.
My issue is that in my driver class I tested the "getType" method directly, and it worked properly. Then, in the "displayByType" method I even say "if Type is null, do this," but it still just throws the exception. I have no clue why, but I feel like it's probably really simple and obvious; I've just been working on this for too long to see it right now. :/
Edit 1: The contents of Type = AddyBook.get(x) is an object, and the result of .getContactType() is an enumeration.

A: I believe this line is wrong:
if(type.equals(null))
    strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";

it should be:
if(type == null)
    strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";

Without seeing the contents of the method calls here:
Type = AddyBook.get(x).getContactType();

it'll be hard to debug but if I were to guess it would be the method "getContactType()" is returning null.
EDIT:
Try unchaining the calls:
Instead of:
Type = AddyBook.get(x).getContactType();
strType = Type.toString ( );

Try:
Entry entry; // I don't actually know what .get() returns
entry = AddyBook.get(x);
if (entry == null)
    throw new RuntimeException("entry is null at "+x+" book size="+AddyBook.size());

Type type = entry.getContactType();
if (type == null)
    throw new RuntimeException("type is null from entry="+entry.toString());

strType = Type.toString ( );

redpajama_set_name: RedPajamaStackExchange


A Contemporary Orange template in blocks and squares with matching colour palette. Stylish and very popular.Click here for our Contemporary Blue template.
Alot of thanks however my university uses blue as logo and building. Watch my univ http://www.ukh.ac at Hawler city the capital of Kurdistan. Thanks again!
Perhaps the white area may be at a bit upper and shorter in up-down direction,so that there be left more room for charts and information. Thanks for the template.
Thank you, I found it really exclusive.
Hi there, Thanks for the free templates. Many sites offer "free templates" and once you get there you find you have to pay. Shame on them. I'm teaching English in China and more templates on Education would be greatly appreciated. Presentations are a wonderful way to teach the English language and there's a rapidly growing market here in China despite the economic crisis. I'm sure there's also a market for finished presentations in both English and Chinese which would be snapped up by teaching institutions, teachers and students alike.
I like the different design and the colors. I am doing a presentation for a graduate level accounting class and I'm just tired of seeing and using the same 'ol backgrounds. Thanks for allowing the use of your creativity.
Greetings from Addis Ababa; thank you for these really nice backgrounds which I will use for a presentation tomorrow on technical cooperation in Africa.
Thank you. I am creating a presentation for a national adult basic education presentation. This orange theme should wake them up!
This was perfect for a simple, classy presentation.
Thank you for offering this template for free.
Thanks for the free templates.
Simple, stylish. Exactly what I needed.
I've been looking around all morning for a proper template for my university project on democracy and I think this one looks the best. I like it very much — mature, elegant, and simple. Thanks much!
I am using it for an energy presentation I have a final on for school in a Humanities 432 class. Nice colors!
Thank you for this. I'll be using it for our ITAP General Membership Meeting. For our President's report.
I am going to use it to load material on interviewing. Liked the different style and colour scheme that will make it easy to see text over it.


text:
Frederick Hugh Crowley (31 December 1890 – 5 May 1945) was an Irish Fianna Fáil politician who served as a Teachta Dála (TD) from 1927 to 1945.

He was born on 31 December 1890 in the family home at Gurteen, County Cork, son of Michael N. Crowley, manufacturer, and Honor Crowley (née Cronin). He was Educated at the North Monastery School, Cork, and the University of Leeds (1909–12), he graduated with a diploma in textile industry (July 1912) and moved to Rathmore, County Kerry, where his family then resided.

He was an enthusiastic supporter of Conradh na Gaeilge and joined the Irish Volunteers in 1914. He later served with the IRA, taking part in many raids including an attack on Rathmore RIC barracks. A member of Kerry County Council from 1917, he took the anti-treaty side in the Irish Civil War and joined Fianna Fáil at its foundation.

A lecturer and farmer, he was first elected to Dáil Éireann as a Fianna Fáil TD for the Kerry constituency at the September 1927 general election. He was re-elected to the Dáil at the next seven general elections, switching to the new Kerry South constituency at the 1937 general election. He died in 1945 while still in office.

After his death, the by-election in Kerry South on 4 December 1945 was won for Fianna Fáil by his widow, Honor Crowley. It was the first case anywhere in Ireland of a woman succeeding her husband at a by-election. Honor Crowley, a daughter of the MP John Pius Boland, remained a TD until her death in 1966.

References

1890 births
1945 deaths
Fianna Fáil TDs
Irish farmers
Members of the 6th Dáil
Members of the 7th Dáil
Members of the 8th Dáil
Members of the 9th Dáil
Members of the 10th Dáil
Members of the 11th Dáil
Members of the 12th Dáil
Spouses of Irish politicians
Alumni of the University of Leeds

redpajama_set_name: RedPajamaWikipedia


text:
Ray Negron's Playball Weekly Blog
Negron's Impact: New York Times Students Hit The City To Learn Sports Business From Those Who Get It Done
Ray Negron
For the second straight early summer, high school students from all over the country come to New York for a two week crash course in the business of sports. Taught by longtime New York area sports business pro Joe Favorito, the program gives these rising juniors and seniors a chance to find out what they like, and maybe don't like, about a field they may be passionate about.
On Thursday, the class, which also includes a young lady from Amsterdam and a Yemeni-American softball player from Texas, spent the day at Yankee Stadium, where Yankees Magazine editor Al Santasiere spent time with them talking about the ins and outs of business life with the Bronx Bombers, as well as imparting career advice ("Use your internships as a semester long job interview," was one of his pearls of wisdom shared, along with the value of networking and working hard).
Several of the students are aspiring journalists, so the day, which included tours of Monument Park and the Yankee Museum, served them well.
Yankee Stadium was only one of the stops during the two week program for the group, which includes students from as far away as San Diego and Los Angeles and as close as the Upper West Side of Manhattan. They visited MLB Advanced Media to talk digital sports, the Barclays Center to learn about the arena business, another trip to Yankee Stadium to check out NYCFC and even Coney Island to see how the Nathan's Hot Dog eating contest is run. Some of the students even crossed paths with former Giant now Packers tight end Martellus Bennett and retired Yankee Alex Rodriguez while they were in midtown last week.
They will wrap the program with a special presentation on Friday, and will even get to hear from former Mets and Oakland A's pitching coach Rick Peterson on how the inner workings of an MLB team operate.
"The goal of the program is to give these kids an important look into all areas of sports business, with the hope that they realize they can turn a passion into a real career, which should allay some of their parents fears," Favorito, who also does a similar but more intense program for Columbia University later in the summer, said. "We bring in experts in many fields, from collegiate sports to brands to media members, and give the students real life experience that can hopefully help them choose a college, and with that get a better understanding of the great potential that lies ahead."
There is nothing better than work life experience, and these students are learning from some of the best, in the greatest city in the world for sports and business. This past week we would have celebrated the Boss's 87th birthday. Nothing would have made him happier than to spend time with all of these kids and to give them advice on life and the career paths that they might choose. He was great with young people especially when he saw that they were serious about their education. As a parent, I thank the Yankees for never forgetting and always welcoming young people who are just realizing their dreams.
Weekends with Ray: ESPN 1050 Deportes Saturday and Sunday 12-2pm. Read Ray on Newsmax.
Follow Ray Negron
Facebook-square Instagram Mouse-pointer
Steinbrenner, Munson Levine…A month of Yankee leadership
Ray Negron Thursday, January 26, 2023
Islanders, new UBS Arena, give fans millions of reasons to turn out
Ray Negron Friday, January 13, 2023
Even with one leg, he is not handicapped
Ray Negron Wednesday, January 11, 2023
How do you mend a broken heart, especially when it's the Boss's
Ray Negron Monday, January 9, 2023
George Steinbrenner, You'll be in our heart 50 years later!
Ray Negron Tuesday, January 3, 2023
90 years of love from pals Mom
Ray Negron Friday, December 30, 2022
PrevPreviousNegron's Impact: A Hank's Yanks Dream Comes True
NextNegron: Nelson Cruz an All-Star in Every WayNext

redpajama_set_name: RedPajamaCommonCrawl


Who is our Evangelism & Missions major designed for?
Christian public school teachers and administrators.
What Will A Evangelism & Missions Graduate Be Equipped To Do?
Biblical principles and common sense approach to the basic preparation for missionary service.
Students are required to complete the minimum number of courses indicated in each category listed in their program. Each Associate degree program requires a total of 32 courses (64 credits). All undergraduate courses offer two credits. Unless instructed otherwise.
Students are required to complete the minimum number of courses indicated in each category listed in their program. Each Bachelor program requires a total of 64 courses (128 credits). Courses must be ordered from the current "order form". All undergraduate courses offer two credits.


text:
Fabriano is a town and comune of Ancona province in the Italian region of the Marche, at  above sea level. It lies in the Esino valley  upstream and southwest of Jesi; and  east-northeast of Fossato di Vico and  east of Gubbio (both in Umbria). Its location on the main highway and rail line from Umbria to the Adriatic make it a mid-sized regional center in the Apennines. Fabriano is the headquarters of the giant appliance maker Indesit (partly owned by Whirlpool).

Fabriano, with Roma, Parma, Torino and Carrara, is an Italian creative city (UNESCO). The town is in the category Folk Arts  (for the Fabriano's handmade paper production).

History
Fabriano appears to have been founded in the early Middle Ages by the inhabitants of a small Roman town  south at Attiggio (Latin Attidium), of which some slight remains and inscriptions are extant. In 1276, Fabriano became one of the earliest places in Europe to produce paper. Since the 13th century and even today, the town has a reputation for fine watermarked paper. This led to Fabriano's prosperity in the Late Middle Ages and the Renaissance, and was also one of the factors that led to the establishment of nearby Foligno in Umbria as one of the earliest printing centers in Italy in the 15th century, from 1470 onwards.

Geography
The municipality borders with Cerreto d'Esi, Costacciaro (PG), Esanatoglia (MC), Fiuminata (MC), Fossato di Vico (PG), Genga, Gualdo Tadino (PG), Matelica (MC), Nocera Umbra (PG), Poggio San Vicino (MC), Sassoferrato, Serra San Quirico and Sigillo (PG).

Frazioni
The hamlets (frazioni)  of Fabriano are:

Albacina, Argignano, Attiggio, Bassano, Bastia, Belvedere, Borgo Tufico, Cacciano, Ca' Maiano, Campodiegoli, Campodonico, Cancelli, Cantia, Castelletta, Ceresola, Ciaramella, Coccore, Collamato, Collegiglioni, Colle Paganello, Cupo, Fontanaldo, Grotte, Marena, Marenella, Marischio, Melano, Moscano, Nebbiano, Paterno, Poggio San Romualdo, Rufano beach, Precicchie, Rocchetta, Rucce, San Donato, San Giovanni, San Michele, San Pietro, Sant'Elia, Serradica, Valgiubbola, Vallemontagnana, Valleremita, Vallina, Varano, Viacce, Vigne.

Main sights
Fabriano's wealth and commitment to the fine arts in the late medieval period have left it with many monuments.

Churches
Fabriano Cathedral, dedicated to San Venanzio (Saint Venantius) (14th century, rebuilt in 1607–17). From the Baroque restoration are the stucco decoration of the interior and the canvasses by Gregorio Preti, Salvator Rosa, Giovanni Francesco Guerrieri, Giuseppe Puglia and Orazio Gentileschi. To the original Cathedral belong the polygonal apse, the cloister and the St Lawrence Chapel with frescoes by Allegretto di Nuzio (c. 1360). Also important are the frescoes with Stories of the True Cross by the Folignate painter Giovanni di Corraduccio (1415).
San Filippo Neri - Church in 14th century attached to hospital, converted to oratory of the Philippines in 1628
San Domenico
Santi Biagio e Romualdo
Sant'Onofrio - Church rebuilt in 1727
The Benedictine Abbey
St Augustine
Santa Caterina da Siena - Present church erected 1508
Collegiata of St. Nicholas
Santa Maria del Piangato
St Benedict
Oratory of the Gonfalone

Other buildings

Palazzo del Podestà (1255) built in white stone from Vallemontagnana and subsequently modified several times. It has a distinctive bridge structure, a memory of the stream which once flowed under it. The central arcade has frescoes from the 13th-14th centuries portraying warriors, and an enigmatic Wheel of Fortune moved by a feminine figure.
Sturinalto Fountain  (1285), designed by Jacopo di Grondolo, who was inspired by the Fontana Maggiore in Perugia.
Communal Palace  (c. 1350, rebuilt in 1690). It was the residence of the Chiavelli family, lords of the city until 1435. In the courtyard is a lapidarium with fragments of buildings of the ancient Roman cities of Attidium (Attiggio), Tuficum (Borgo Tufico) and Sentinum (Sassoferrato).
Pinacoteca Civica Bruno Malajoli displayed in the former Hospital (Spedale di Santa Maria del Buon Gesù) - The hospital was first built in 1456. The art collection of the Pinacoteca were moved here in 1994. The collection contains works by Rainaldetto di Ranuccio of Spoleto, Master of San Agostino, Master of San Emiliano, Master of the Magi (Fra Giovanni di Bartolomeo), Maestro dei Beati Becchetti, Puccio di Simone, Allegretto Nuzi, Francescuccio di Cecco Ghissi, Master of Fossato, Master of San Verecondo, Ottaviano Nelli, Master of Staffolo, Antonio da Fabriano, Bicci di Lorenzo, Neri di Bicci; Bernardino di Mariotto, Filippo da Verona, Venanzio da Camerino and Piergentile da Matelica, Simone de Magistris, Domiziano Domiziani, Girolamo or Giacomo Nardini, Andrea Boscoli, Orazio Gentileschi, Ambrogio Monaco, Francesco Podesti, and Gentile da Fabriano.
Loggiato of St. Francis (c. 1450)
Vasari Portico (1316)
Paper and Watermark Museum Fabriano
Villa Marchese del Grillo

Personalities
 Totila, penultimate king of the Ostrogoths, suffered his defeat at Taginae near Fabriano on  1 July 552 AD.
 Gentile da Fabriano, 15th-century painter, whose most famous work, an oil painting of the Epiphany, is in the Uffizi Gallery in Florence.
 Saint John dal Bastone 12th-century Silvestrine monk, born in Paterno.
 Francesco Stelluti, co-founder of the Accademia dei Lincei, born in Fabriano in 1577
 Jessica Rizzo (born 1965), pornographic actress and businesswoman.

See also
 Ariston Thermo
 Archivio storico delle Cartiere Miliani Fabriano
 Cartiere Miliani Fabriano
 Cassa di Risparmio di Fabriano e Cupramontana
 Elica
 Fabriano Basket
 Roman Catholic Diocese of Fabriano-Matelica

References

(Incorporates text from Bill Thayer's Gazetteer of Italy, by permission.)

External links

Fabriano official website
 Museo della Carta (Paper making museum)
Fabriano Storica - history, art, culture, legend, curiosity
Bill Thayer's site
Made in Fabriano Academy

Further reading
Albro, Sylvia Rodgers. Fabriano: City of Medieval and Renaissance Papermaking. Washington, DC, and New Castle, DE: Library of Congress and Oak Knoll Press, 2016.

Cities and towns in the Marche


This Unisex Pullover Hoodie is warm and cozy, heavyweight and roomy, and built to last. Grab this hoodie when you need something to keep you warm and comfy! The Blue Bear is vibrant and beautiful in ice blue.


Sonenshine Partners has advised Sivantos Group, one of the largest vertically-integrated manufacturers of hearing aids globally and portfolio company of leading global private equity group EQT, on the acquisition of hearing healthcare benefits manager TruHearing. The strategic combination, which closed on April 20, 2018, will expand distribution for Sivantos' premium hearing aid brand Signia with hearing care professional ("HCP") customers nationwide and will also continue Sivantos' leadership in hearing healthcare benefits management with third-party administrators of managed hearing aid coverage.
"We are very pleased to have advised EQT and Sivantos Group on this important transaction within the U.S. hearing healthcare market," said Marshall Sonenshine, Chairman of Sonenshine Partners.
The transaction adds to Sonenshine Partners' long-standing track record for excellence in the Consumer Health sector generally, as well as in the Audiology industry.
Within the Audiology industry, Sonenshine Partners previously advised the hearing aid retailer and hearing healthcare benefits manager HearUSA on its $135 million sale to Siemens AG's hearing aid division (n.k.a. Sivantos Group). Sonenshine Partners has also advised or completed transactions with many other managed care, specialty healthcare or consumer health & wellness companies such as Highmark, WellPoint, Walgreens Boots Alliance, 1-800 CONTACTS, Optical Distributor Group and Vision Direct Group.
The business operations of the former Siemens AG hearing aid division have been combined into the Sivantos Group since early 2015. Sivantos can look back on almost 140 years of German engineering and countless global innovations. Today Sivantos is one of the leading hearing aid manufacturers worldwide. With its around 6,000 employees, the group recorded revenues of 967 million euros in the fiscal year 2016/2017 and an operating profit (Adj. EBITDA) of 238 million euros. Sivantos' international sales organization supplies hearing care specialists and sales partners in more than 120 countries. Particularly high value is placed on product development. Sivantos aims to become the market leader in the coming years with its brands Signia, Siemens, Audio Service, Rexton, A&M, HearUSA and audibene. The owners of Sivantos are the anchor investors EQT along with the Strüngmann family as a co-investor.


text:
Deborah James Confirmed as Air Force Secretary
Dec. 16, 2013 | By Marc V. Schanz
After multiple holds and months of delay, the Senate confirmed Deborah Lee James early Friday to be the 23rd Secretary of the Air Force. She is the second woman to hold the position. The 79-6 vote, which came nearly two months after her Sept. 19 nomination hearing before the Senate Armed Services Committee, was made possible by November's nuclear option—a controversial decision to change the 60-vote majority required for final vote on Presidential nominations to a simple majority of 51 votes. James, nominated by President Obama in August, will replace Acting Secretary Eric Fanning, who has led the service since the retirement of Michael Donley in June. "I've seen a number of Secretaries, and I think she and (Chief of Staff Gen. Mark) Welsh will be the strongest team I have ever seen and great advocates for airpower," Fanning told Pentagon reporters on Dec. 13. "I'm very excited to go back to my day job as undersecretary," Fanning added. Welsh said he was excited about what James will bring to the service, and thanked Fanning for his time as USAF's top civilian. "He never acted like the Acting Secretary," Welsh said, adding Fanning made tough decisions and has worked tirelessly on the behalf of all airmen. (AFA release on James confirmation)


The National Catholic Community Service (NCCS) served the spiritual, social, educational, and recreational needs of the military and defense workers and their families from 1940 to 1980. NCCS rendered service with both professional personnel and volunteers at home and overseas. It was a member agency of the United Service Organization (USO) and the Veteran's Administration's (VA) Voluntary Service National Advisory Committee and operated a VA Hospital Program. NCCS was under the direction of a board of trustees composed of members of the Administrative Board of the American's Bishops' Conference, the military vicar and his delegate, that worked closely with the various departments and committees of the Bishops' Conference.
It was separately incorporated in the nation's capital on April 21, 1941 and worked closely with the other offices and committees of the NCWC, especially the National Council of Catholic Men (NCCM) and the National Council of Catholic Women (NCCW). The NCCS was also a charter member of the United Service Organization (USO) Inc. founded with the support of President Franklin D. Roosevelt on February 4, 1941 along with five other member agencies: Young Men's Christian Association (YMCA), Young Women's Christian Association (YWCA), The Salvation Army, the National Jewish Welfare Board, and the Travelers Aid Association. Camp Shows Inc., who performed the shows that eventually made the USO famous, was also formed in 1941and affiliated with the USO.
During America's involvement in the Second World War (1941-1945) there were over 1,500 clubs operated domestically by the six member agencies, including NCCS, as well as nearly 1,200 operated domestically by local communities and nearly 200 clubs operated overseas by USO Inc.
The USO officially terminated operations on December 31, 1947 though it maintained its corporate structure and a small headquarters staff thereafter. With the outbreak of the Korean War in 1950 the NCCS joined with the YMCA and the Jewish Welfare Board to form the Associated Services for the Armed Forces. The USO Inc. was reactivated in 1951with the original six member agencies and the camp shows. In 1962, the USO's National Ad Hoc Survey Committee stated the need for the USO's existence during the Cold War and made several recommendations, including that domestic operations be given autonomy and financial responsibility while USO Inc. would continue with overseas operations.
The Vietnam War era of the 1960s and 1970s initially generated large funding for USO Inc. but as public opinion increasingly turned against the war funding waned. A financial crisis resulted in 1974 after the United Way of America recommended that their local affiliates need no longer support USO Inc. and the Salvation Army threatened to withdraw as a member agency, though they delayed this action until 1976 when the YMCA also withdrew after USO Inc. announced it could no longer fund the member agencies. The NCCS, along with the Jewish Welfare Board and Traveler's Aid, continued to operate as member agencies until 1979 when the NCCS board voted by two thirds majority to dissolve. The official certificate of dissolution was issued by the District of Columbia on February 22, 1980. Thereafter the efforts of American Catholics to support the military would either be performed on an individual basis or as part of other organizations such as the Military Archdiocese of the United States.
A major concern of the NCCS for much of its existence was operating a Veterans Administration (VA) Hospital Program/Service as part of the VA's Voluntary Service National Advisory Committee. In 1946, Pope Pius XII extended the jurisdiction of the Military Ordinariate to include chaplains and VA hospital patients. This made the latter eligible to participate in activities and services offered by NCCS as a USO member agency. In 1947, the NCCS board designated NCCS as the official agency of the Church to organize and develop the overall program of Catholic volunteer services in VA hospitals. It was actually efforts at a VA hospital in Lyons, New Jersey, that would serve as the national model. The NCCS-VA Hospital Service had a professional director, based in Washington, from its beginning until dissolution in 1979 in the person of Philomena F. Kerwin. She continued in this capacity as the United States Catholic Conference (USCC) took over direct administration, becoming the USCC-VA Hospital Service.


We get a number of enquiries from people asking about the various mesh screen options available for villas and apartments in Dubai and across the UAE. There are a range of options and it quickly gets confusing. Each option has strengths and limitations. Let's have a look at some of the options available.
Fiberglass. This is the most common form of fly and insect screen mesh found in the UAE. It is cheap, flexible and when new looks good. The main weakness of fiberglass is its durability. In the hot Middle East environment fiberglass simply does not last. Under direct sunlight the mesh tends to fade. And for those of us with kids, fiberglass doesn't survive their pushing and pulling. The other weakness of fiberglass is the way it is secured in the frame. To hold it in place, a rubber spline is used. Rubber however, breaks down in the heat and will eventually fall out of its retaining groove. Replacing the fiberglass and rubber is a relatively simple process and may need to be done every couple of years.
Polyester. This mesh looks similar to fiberglass and is around the same cost per square meter. However it has a few subtle differences. It stretches less than fiberglass making it more stable within a screen frame. It also has a high temperature resistance making it suitable for applications in the Middle East. The mesh will still eventually break down particularly when exposed to direct sunlight. A polyester mesh is also held in place by a rubber spline.
A contemporary method of employing these two fabrics is to fold the mesh in small sections of about 2cm. This folded mesh is in a zig zag pattern and folds away like an accordion when not in use. This eliminates the need for a rubber spline and offers an unobstructed view when the screen isn't in use. The main weakness of this pleated system is the folding out and contraction of the mesh is controlled by a nylon string. This string, like the mesh, can break down over time in direct sunlight.
Stainless Steel. This is the toughest mesh available on the market. This mesh offers an extremely long life, security and good looks. This is also the most expensive option as the individual wires are weaved together and the mesh is then powder coated. It is worth noting that due to the complex fabrication method there are many 'cheap' stainless steel options that are manufactured in China. Be careful when selecting stainless steel mesh as not all are of the same quality. The main weakness with stainless steel is the slight obstruction of the view. Due to its thickness, any glass behind the screen looks like it has window tinting on it.
Galvanised Aluminium. This is a cheaper form of metal mesh. Itcorrodes easily especially when its coating is damaged. It can be used for normal flyscreen mesh applications and provides a little more strength than fiberglass. Depending on its thickness it is often held in place with a rubber spline so suffers from this weakness.
In conclusion, there are many mesh options available to you. Sometimes cost is the main factor which drives many people to fiberglass or pleated mesh. If durability, looks and security are your priority then you can't go past quality stainless steel mesh. The choice is yours.