Monday, March 30, 2009

我哪里都不去 就在这等你

从你眼睛看着自己最幸福的倒影
握在手心的默契是明天的指引
无论是远近什么世纪
在天堂拥抱或荒野流离
我爱你我敢去未知的任何命运
我爱你我愿意准你来跋扈地决定世界边境
偶尔我真的不懂你又有谁真懂自己
往往两个人多亲密是透过伤害来证明
像焦虑不安我就任性
怕泄漏你怕所以你生气
我爱你让我听你的疲惫和恐惧
我爱你我想亲你倔强到极限的心
我撑起所有爱围成风雨的禁地
当狂风豪雨想让你喘口气
被划破的信心需要时间痊愈
梦想牵着怀疑未来看不清
就紧紧地拥抱去传递
能量和勇气我爱你
我爱你我想去未知的任何命运
我爱你让我听你的疲惫和恐惧
我爱你我想亲你倔强到极限的心
哪里都一起去一起仰望星星
一起走出森林一起品尝回忆
一起误会妒忌一起雨过天晴
一起更懂自己一起找到意义
让我爱你
我不要没有你我不能没有你绝不能没有你

Saturday, March 28, 2009

Cross

小时候

喜欢在岔路口等妈妈下班

看着来往的车辆

在岔路口

选择属于自己的方向

长大了

越来越害怕选择

哪怕对现实再无奈

也不想改变

或许是不敢

可是心里还是有些不甘

反复的说服自己

一秒钟后

一切构想好的安慰

都化为虚无

在她的支持下

终于有一次的做了选择的准备

邮件已经发出

未来怎样

结果如何

只有慢慢的等待

不知道该如何去等待

一个人的时候总会想到许多许多

多到自己无法承受

好累……

做人好累

可是今生只能做人

别无选择

那就努力做好吧

就像她说的一个不成功

联系下一个

找到一个真正适合自己的地方

既然如此

就要学会勇敢

学会面对

学会承担

Friday, March 27, 2009

Finger Family

  

梦是要自己掌握的,就好像天空中的那片云朵,

就算被风吹去到异乡他国,也总会有一天在经过

即使有一天梦被打碎了,我也会更加坚强的活着

因为我坚信风马上就会把它吹落,一种天晴的收获

更美好的天空还在远方等着,现在不是忧郁的时刻

要相信等待并不能带给你什么,因为现在我还活着

把微笑当做你晴天的指针,然后向着快乐出发

现在已没有什么要顾虑的,至少现在我还活着

Friday, March 20, 2009

Shift UI in Ogre dynamically

Changing UI dynamically in the application is needed especially when you want the user do something step by step.

At the beginning, I thought it would be very difficult. Also I found nothing when searching on the Internet. When I noticed the ui is loaded through following method:

CEGUI::Window *sheet=CEGUI::WindowManager::getSingleton().loadWindowLayout(
(CEGUI::utf8*)"shapegui.layout");
mSystem->setGUISheet(sheet);

How about directly changing the ui when certain events occurs. Have a try. I just added the above code to a button event, using a new UI layout file. When I click that button, it works!!!!

Ogre Rendering Loop

The typical Ogre application will render one frame after another, ceaselessly.That means we just start the Root::startRendering() method and everything will be done automatically.

However, sometimes we want to update the scene after we change some scene content. With Root::startRendering(), we can just do our redraw process and let the system to render the new scene.

Moreover, Root::startRendering() method simply starts a small loop that calls another method renderOneFrame().

Thus, we can manually do rendering  with renderOneFrame() method.

3369746541

Tga & imageset for CEGUI

Add static images to the CEGUI used in Ogre, we need assemble images into a tga files in the imageset form.

First, create a tga image file containing all the needed images.

1) Using Photoshop, create a new document with transparent background.

2) Put all the images in that document and arrange them in a good order and position;

3) Select only those will not be transparent parts and all these kinds of parts, in the channel frame, click the button"Save Selection as Channel" the one which is shown as a dark rectangle with whit circle. After clicking this button, a new alpha  channel will be created. Note, if there already exists an alpha channel delete it.

4) Save the document as tga file format. And this step is done.

Second, create a *.imageset file, which is a XML based file to describe the tga file, the format is something like this:

   1: <?xml version="1.0" ?>


   2: <Imageset Name="ShapeGUI" Imagefile="ShapeGUI.tga" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true">


   3:       <Image Name="ShapeLabel" XPos="0" YPos="2" Width="190" Height="40" />


   4: </Imageset>




 



Finally, we can use those images in CEGUI.



When create a staticImage window, set the Image property to something like this:





   1: set:ShapeGUI image:ShapeLabel




 



Then it's done.

Develop your own coding style

For the comment, usually for single line comment we just use "//". Also, when we debug the application, to comment or uncomment some single code, we also use "//". Sometime it's better to distinguish them but not compulsory.

Therefore, I decide to use "///" to begin the informative comments and use "//" to just comment the code for debugging.

 

Appealing Character Factory

ACFactory

ACF

Thursday, March 19, 2009

Ogre Render Queue

A physical Engine

http://www.box2d.org/index.html

 

To use CEGUI in Ogre, I followed the tutorial in the wiki and added the gui to my existing code. However, I found that my drawing code draw twice!!!!!

One is drawn on the whole window and the other is draw as I desired in the gui frame window.

For two days searching on line, found nothing help.

I just comment everything and test every code part. Finally I found that both the gui and my drawing objects are in the RENDER_QUEUE_OVERLAY.

That's the problem!!!!!

By changing my drawing objects to RENDERE_WORLD_GEOMETRY_1, everything works well!!!!!!

Thank goodness!!!

News Digest Mar.19

Studying the Female Form: Math Could Lead to Sexier Lingerie, Safer Labcoats

PhysOrg.com (03/12/09)


Researchers at Japan's Kyoto Institute of Technology and Osaka University have developed a computerized model for identifying body shape components that can be used to design close-fitting products.  The researchers have developed a technique that allows them to extract a person's body shape components from three-dimensional (3D) data and then link that data to a classification of trunk shapes.  The researchers measured 560 Japanese women aged 19 to 63 using laser metrology to map control points at specific places on their trunks.  The data was applied to a generic 3D trunk model to create a database of body shapes.  The researchers then used statistical and cluster analysis to classify trunk characteristics into five different groups, each depending on slimness, breast size and angle, neck type, and shoulder slope.  The researchers say their analysis will be helpful in the production of clothes that fit better for each size and shape, and in improving practical functional clothes used for body adjustments and posture improvement.
http://www.physorg.com/news156096749.html

End-end Principle in System Design

Since certainly functionality must be implemented on an end-end basis, "functions placed at the lower levels may be redundant of of little value when compared to the cost of providing them at the higher level.

[Saltzer 1984]

Wednesday, March 18, 2009

Fireball Editor - Open Source Text Editor

http://dotnetfireball.codeplex.com/

Using Maple in command line

In Command-line Maple, type following command to execute the input file:

read "D:/model.mpl";

Also we can use following command to redirect the output to a text file:

[Installation Folder]\Maple 12\bin.win\cmaple.exe "D:/model.mpl" > res.txt

Tuesday, March 17, 2009

Using BCDEDIT.EXE to Clean Up Windows Vista Boot Manager

In this blog post, I will describe how to clean up the Windows Vista Boot Manager using the command line tool calledBCDEDIT.EXE located at C:\Windows\System32 assuming Windows Vista is installed on Drive C.

You may have installed another operating system earlier on another drive and you now have formatted this drive. When you boot your computer, you are presented with a choice of what operating system to start with but one of the entries do not work because you have removed the operating system. BCDEDIT.EXE is a command line tool to manage the BCD store (Windows Vista Boot Manager). For a list of complete commands that BCDEDIT.EXE offers, open a Command Window and type bcdedit /?.

NOTE: To enlarge the images, simply click on the images you would like to view. With Internet Explorer 7, you can right-click on the image to select Open in New Tab.

Removing invalid entries in the Windows Vista Boot Manager
    1. Open an elevated Command Window, refer to my blog post "Opening an Elevated Command Prompt" for instructions.
    2. Type:
      bcdedit > c:\users\yourusername\desktop\bcd.txt
      NOTE: A file called "bcd.txt" should now be on the desktop.
    3. Open "bcd.txt" and note the "identifier" value for the invalid boot entries.
    4. Type:
      bcdedit /delete {identifier}
    5. To remove the timeout of the Windows Boot Manager, type:
      bcdedit /timeout 0

Sunday, March 15, 2009

Big rain

Out of the window, the rain comes with the dark clouds. Thick cloud covered the whole city, thunder shakes the earth, lighting shines its power quickly but short.

Unconformable...

Never feel so tired and ...

Home, i wanna go home ...

Tuesday, March 10, 2009

To start with Ogre

Add "stdio.h" header file to the orge application can enable the command line promote to display the execution information.

Be careful about the namespaces!!!!

As many data structures in Ogre uses the Ogre namespace, if you want to use it, do remember to use the Ogre namespace!!!!!!!

 

Steps to start creating a project based Ogre:

1. Create an empty project.

2. In the project properities ( Make sure you are editing All Configurations):

a. OutputDirectory -> bin\$(ConfigurationName)

b. Intermediate Directory -> obj\$(ConfigurationName)

c. Debugging|Working Directory -> $(OutDir)

d. If for debug mode, Linker|Input -> OgreMain_d.lib OIS_d.lib CEGUIBase_d.lib OgreGUIRenderer_d.lib ode.lib

e. If for release mode, Linker|Input -> OgreMain.lib OIS.lib CEGUIBase.lib OgreGUIRenderer.lib ode.lib

f. Default, vs will organize the source files in filters, but in the project directory, they are all together not in separate folders. To show it in separate folders, in the Options|Project and Solutions|VC++ Project Settings|Solution Explorer Mode -> Show all files. And then you need to manually add folders such as src and include.

g. Copy the debug/release files in the Ogre sdk to your project's debug/release folder

h. Copy the media folder in the Ogre sdk to your project folder, modify it if necessary

Next begin your work!

Really a tedious way, however, I tried one afternoon to create a wizard to automate this process and I failed. Maybe just do it manually it not that bad...

Simple OpenGL Test Framework

http://www.codeproject.com/KB/openGL/OpenGLTestFrmwk.aspx

Thursday, March 5, 2009

Microsoft Envisioning

 

http://www.officelabs.com/Pages/Envisioning.aspx

Future

I saw this Einstein Quote this afternoon, I really like it.

I never think of the future. It comes soon enough.

Conversion between Utf-8 and GB2312

Some codes about conversion between utf-8 and gb2312 when handling different text format.

// ChineseCodeLib.h: interface for the CChineseCodeLib class.
//
//////////////////////////////////////////////////////////////////////
#include<string>
using namespace std;

/*
功?能?:?汉?字?GB2312与?UTF-8编?码?互?转?
作?者?:?litz
Email:mycro@163.com
参?考?:?吴?康?彬?先?生?的?文?章?《?UTF-8与?GB2312之?间?的?互?换?》?
http://www.vckbase.com/document/viewdoc/?id=1397
*/


#if !defined(__CCHINESECODELIB_H_)
#define __CCHINESECODELIB_H_


class CChineseCodeLib
{
public:
static void UTF_8ToGB2312(string& pOut,char *pText, int pLen);
static void GB2312ToUTF_8(string& pOut,char *pText, int pLen);
// Unicode 转?换?成?UTF-8
static void UnicodeToUTF_8(char* pOut,wchar_t* pText);
// GB2312 转?换?成? ?Unicode
static void Gb2312ToUnicode(wchar_t* pOut,char *gbBuffer);
// 把?Unicode 转?换?成?GB2312
static void UnicodeToGB2312(char* pOut,unsigned short uData);
// 把?UTF-8转?换?成?Unicode
static void UTF_8ToUnicode(wchar_t* pOut,char* pText);

CChineseCodeLib();
virtual ~CChineseCodeLib();
};

#endif // !defined(__CCHINESECODELIB_H_)




///////////////////////////////////////////////////



// ChineseCodeLib.cpp: implementation of the CChineseCodeLib class.
//
//////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include "ChineseCodeLib.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CChineseCodeLib::CChineseCodeLib()
{

}

CChineseCodeLib::~CChineseCodeLib()
{

}


void CChineseCodeLib::UTF_8ToUnicode(wchar_t* pOut,char *pText)
{
char* uchar = (char *)pOut;

uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);

return;
}

void CChineseCodeLib::UnicodeToGB2312(char* pOut,unsigned short uData)
{
WideCharToMultiByte(CP_ACP,NULL,(LPCWSTR)&uData,1,pOut,sizeof(wchar_t),NULL,NULL);
return;
}

void CChineseCodeLib::Gb2312ToUnicode(wchar_t* pOut,char *gbBuffer)
{
::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,pOut,1);
return;
}

void CChineseCodeLib::UnicodeToUTF_8(char* pOut,wchar_t* pText)
{
// 注?意?wchar_t高?低?字?的?顺?序?,低?字?节?在?前?,?高?字?节?在?后?
char* pchar = (char *)pText;

pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[1] & 0xC0) >> 6);
pOut[2] = (0x80 | (pchar[0] & 0x3F));

return;
}

void CChineseCodeLib::GB2312ToUTF_8(string& pOut,char *pText, int pLen)
{
char buf[4];
char* rst = new char[pLen + (pLen >> 2) + 2];

memset(buf,0,4);
memset(rst,0,pLen + (pLen >> 2) + 2);

int i = 0;
int j = 0;
while(i < pLen)
{
//如?果?是?英?文?直?接?复?制?就?可?以?
if( *(pText + i) >= 0)
{
rst[j++] = pText[i++];
}
else
{
wchar_t pbuffer;
Gb2312ToUnicode(&pbuffer,pText+i);

UnicodeToUTF_8(buf,&pbuffer);

unsigned short int tmp = 0;
tmp = rst[j] = buf[0];
tmp = rst[j+1] = buf[1];
tmp = rst[j+2] = buf[2];


j += 3;
i += 2;
}
}
rst[j] = '\0';

//返?回?结?果?
pOut = rst;
delete []rst;

return;
}

void CChineseCodeLib::UTF_8ToGB2312(string &pOut, char *pText, int pLen)
{
char * newBuf = new char[pLen];
char Ctemp[4];
memset(Ctemp,0,4);

int i =0;
int j = 0;

while(i < pLen)
{
if(pText[i] > 0)
{
newBuf[j++] = pText[i++];
}
else
{
wchar_t Wtemp;
UTF_8ToUnicode(&Wtemp,pText + i);

UnicodeToGB2312(Ctemp,Wtemp);

newBuf[j] = Ctemp[0];
newBuf[j + 1] = Ctemp[1];

i += 3;
j += 2;
}
}
newBuf[j] = '\0';

pOut = newBuf;
delete []newBuf;

return;
}


///////////////////////////////////////////////////



//A test main program:



//Input utf.txt in the same folder with the source files.



//Output resutl.txt



// Decode1.cpp : Defines the entry point for the console application.


#include "ChineseCodeLib.h"

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#define LEN 100000

char str[LEN];
string res;


int main(int argc, char* argv[])
{
ifstream fin("utf.txt");
ofstream fout("result.txt");

while(!fin.eof())
{
fin.getline(str,LEN);
if(strlen(str)<10)
continue;
CChineseCodeLib::UTF_8ToGB2312(res,str,strlen(str));
//cout<<res<<endl;
fout<<res;
}

fin.close();
fout.close();

return 0;
}




From: http://blog.csdn.net/Mycro/archive/2005/12/06/544637.aspx

Wednesday, March 4, 2009

Camera

One thing about Ogre Cameras that is different from what you may expect is that you should only be using one Camera at a time (for now). That is, we do not create a Camera for viewing one portion of a scene, a second camera for viewing another portion of the scene and then enabling or disabling cameras based on what portion of the scene we want to display. Instead the way to accomplish this is to create SceneNodes which act as "camera holders". These SceneNodes simply sit in the scene and point at what the Camera might want to look at. When it is time to display a portion of the Scene, the Camera simply attaches itself to the appropriate SceneNode.

Create video from images

 Using FFmpeg is good choice:


ffmpeg -r 1 -f image2 -i jpeg\*.jpg video.avi




http://stackoverflow.com/questions/539257/working-way-to-make-video-from-images-in-c

Labelled representation

 

 

 

Vertices and control vertices.

Post Address

http://www.map.gov.sg/StreetMap/

 

http://www.best.sg/mash/sggeocoder.jsp

 

http://www.streetdirectory.com

 

http://www.singpost.com.sg/quick_services/index.htm

 

http://www.addressdoctor.com/lookup/default.aspx?lang=en&country=SGP

 

http://singapore.angloinfo.com/countries/singapore/postcodes.asp

 

 
 
Singapore : As 6 Wed, 4 Mar 2009
11 Law Link (S)117589
lat 2.311206 long 106.848097 | District : Buona Vista
Singapore » Landmark » University
Singapore Map
 
 
 
Download this free widget
Powered by Streetdirectory.com
You'll be lost without it

 

 

 

 

 

 

 

 

 

 

 

 

 

 

School of Computing,
National University of Singapore,
As 6, #04-23,
11 Law Link,
Singapore 117589

 

School of Computing, NUS
Computing 1
13 Computing Drive
Singapore 117590

 

School of Computing

National University of Singapore

Computing 1. (Unit #03-68)

13 Computing Drive

Singapore 117417

 

3328040880

Tuesday, March 3, 2009

Begin OGRE

After the SDK is installed, add "include" and "bin" directory of the SDK to the Visual Studio's VC++ Directories.

For each project, add "CEGUIBase.lib", "ode.lib", "OgreGUIRenderer.lib", "OgreMain.lib", "OIS.lib" and "ReferenceAppLayer_d.lib" to project's Link menu and Additional Dependencies. (Add all or add only the one you will use in your code.) Moreover, for the first 5 lib files, there is a version for debug: "CEGUIBase_d.lib", "OgreGUIRenderer_d.lib", "OgreMain_d.lib", "OIS_d.lib".

Missing a Configuration File or DLLs

If you try to launch your freshly built application but the program complains of missing DLLs or configuration files (*.cfg), then you probably did not copy them over from the OgreSDK folder. In Visual Studios, when you build your application in release mode, it puts the release executable in the [ProjectFolder]\bin\release folder, and the debug executable in the [ProjectFolder]\bin\debug folder. You must copy all the ".dll" and ".cfg" files over from the OgreSDK into the appropriate folders. That is, copy the files from [OgreSDK]\bin\release to [ProjectFolder]\bin\release and [OgreSDK]\bin\debug to [ProjectFolder]\bin\debug. You will also need to edit the resources.cfg file to point at the correct paths. See the next section for more information on this.

Also something in the "Resources.cfg" configuration file should be changed. However, I just copied the media folder to my project folder.

Cannot Launch the Application in Visual Studio

If you are using Visual Studio or Visual C++ to create the application and are having trouble launching it from the environment, the problem is most likely due to the debugger settings. If you press the play button (or go to the Start Debugging menu item) and you get an exception saying that a configuration file (*.cfg) cannot be found, then the Working Directory has probably not been set.

The exact instructions for fixing this will vary based on whichversion of Visual C++ you are using, so I cannot give you a direct walk through, but the basic steps should be the same. Right click on your project in the solution explorer (not the solution itself) and go to properties. Somewhere in the configuration properties should be options for "Debugging". In the debugging options there should be a field for "Working Directory". This should be set to the location that the executable file for your project is being placed.

If you are having trouble figuring out what to put there, try to mimic the "Command" field which should also be in the debugging options. For example, in Visual C++ 2003, the "Command" field should be something similar to "..\..\bin\$(ConfigurationName)\$(TargetFileName)". For the Working Directory, we need to remove the portion of the command which is the target file name (the executable). In this case, the working directory would be "..\..\bin\$(ConfigurationName)". The exact string you have to put there may vary based on your version of Visual C++ and on your build environment, so be sure to check what the Command field is before doing this. Be sure to change the Working Directory for both the Release and Debug configuration.

In Visual C++ 2005 it will probably be something different entirely. I've found the "..\..\bin\$(ConfigurationName)" directory a good thing to try first, if it still does not work you may have to play with it some, or consult some help from the Ogre forums.

The reason we have to do this is that Ogre expects certain files to be in the same directory as the executable, and without setting the working directory to be a directory with these files in it.

 

SceneNodes keep track of location and orientation for all of the objects attached to it. When you create an Entity, it is not rendered in the scene until you attach it to a SceneNode.In addition a SceneNode is not an object that is displayed on the screen. Only when you create a SceneNode and attach an Entity (or other object) to it is something actually displayed on the screen.

One major concept to note about SceneNodes is that a SceneNode's position is always relative to its parent SceneNode, and each SceneManager contains a root node to which all other SceneNodes are attached.

Independent

No reasons why I always get angry for her, even for a little thing. She said she was feeling uncomfortable every time I got angry. I'm sorry, I really love you.

I don't know why god gave me love after everything had been settled down. Maybe I won't go abroad for her. I don't know. I'm sorry I can't be with you and take care of you. I just want be happy, not work that tired everyday.

Maybe I am too selfish. No more than ten sentences come out of my mouth everyday. I just want to talk with somebody, somebody who won't be boring talking with me, somebody who won't can go on the chat when I have no word, somebody who won't laugh at me when I tell out what I am really thinking about, somebody who is willing to share everyday experience with me, somebody..., to make sure I can still talk.

Maybe it's true, there is nobody who will always follow your opinion, who will give your all his effort for you, except yourself. Everyone has his own life, own work and things to handle. None could be the perfect one in your mind.

Maybe the unhappy between us is because I am so dogmatic, want you just follow what I think is right.

I have heard one saying before, the young always do things hurt everyone including himself. I don't know why. Maybe now, I have tasted it. I know I am not happy to have no response to her messages. I know I'm eager to heard her voice. However, I just look at my phone and have no courage to dial the number. I just told myself if I receive another message from her, I will give in...

Maybe I really disturbed her so much. She has her modules, research work, ...

Monday, March 2, 2009

Sites for finding an accommodation

http://www.streetdirectory.com/asia_travel/travel_sites/whats_nearby/cat/85/studio_apartments/

 

This is a good site:

http://www.propertyguru.com.sg/

 

http://singapore.lmbhousing.com/index.php

English phrase for Accommodation

studio apartment

Related phrases:   studio apartment/flat loft studio apartment

公寓套房

 

Condominium 公寓

Sunday, March 1, 2009

OpenCV get pixel value!!!!

In OpenCV, using functions to get pixel values from an image, the pixel position must be carefully set!!!!!

 

Usually, the position we got from images or mouse click is in the form (x,y).

3318775976

In the function cvGet2D(Iplimage *image, int idx0, int idx1), the first parameter is used to specify which image data to get. However, the second parameter is not corresponding to x. Instead, the second parameter is the first index of the image data array, from the above figure, the first index of the image data should be y not x!

 

That means to get the pixel data of the image at (x,y) using
cvGet2D(image, y, x);
not
cvGet2D(image, x, y);

Segment the Human Silhouette

In our project, we want to analyse the human silhouette. To well understand it, it is better to know each body part. But how to segment the silhouette to those meaningful body parts?

1. One way, we find that someone use Generalized Voronoi Diagram Decompostion to split the silhouette into distinct regions. http://www.mpi-inf.mpg.de/~theobalt/VisualHullTracking/index.html

Using this method, some small regions should be post-processed to form a meaningful human body part.

Elephant

                                       ############                                           
                                    ###################                                       
                                 #########################                                    
                               #############################                                  
                             ################################                                 
                            ###############    ################                               
                           ############            #############                              
                         ###########                  ###########                             
       ######           ##########                       #########           ######           
     ##############    #########                          #########    ##############         
    ###########################                             ######## #################        
    ##########################                               ##########################       
   #########################                                  #########################       
   ########################                                    ########################       
  ###### ##################                                     ########################      
  ########################                                       #######################      
  #######################                                        ########################     
  ######################                                          #######################     
#######################                                           ######################     
###########    #######                                            ########   ###########     
###########     ######                                             ######    ###########     
############    ######                                              ######    ############    
############    ######                                               #####    ############    
############    ######                                               #####     ###########    
############    #####                                                ######    ###########    
##### ######   ######                                                ######    ##### #####    
##### ######   ######                                                ######    ##### ######   
##### ######   ######                                                ######    ##### ######   
##### ######   ######                                                ######    ##### ######   
##### ######   ######                                                ######    ##### ######   
##### ######   ######                 ######      ######             ######    ##### ######   
##### ######   ######                ########    #########           ######    ##### ######   
##### ######   ######               ##########   #########           ######    #####  #####   
##### ######   ######               ###########  ##########          ######    #####  #####   
##### ######  #######                 #########   #########          ######## ######  #####   
#####################                  ########    ########          ######################   
######################                #########   #########          ######################   
######################               ##########  ##########          ######################   
######################              ###########  #########          #######################   
######## ##############              #########   #########          ############# #########   
#######   ###### ######       ##      #######     #######          ###### #######  #######    
######     ####   ######    #####                                  ######  #####    ######    
#####      ####   ######    ######                                #######   ####     #####    
#####      ###    #######  ######                                #######    ###      #####    
####       ###     ######  ######                                #######     ##       ####    
###               #######  ######                              #######                ##     
##                 ####### #######                            #######                 ##     
                    ################                          ########                        
                     ################                        ########                         
                      ################                      ########                          
                       ###############                    #########                           
                        ##############                   ##########                           
                         #############                   ########                             
                          ############                   #######                              
                           ###########                   ######                               
                             ########                   #######                               
                               ######                   ######                                
                               #####                    ######                                
                               #####                    ######                                
                               #####                    ######                                
                               #####                   ######                                 
                               #####                   ######                                 
                               #####                   ######                                 
                               #####            #############                                 
                               #####         ###############                                  
                               #####        ################                                  
                               #####      ##################                                  
                               ######     #################           ######                  
                               ######     ######     ######          #########                
                               ######     #####     ######           #########                
                                ######           ##########         ######  ####              
                                ######           ###########      #######   ####              
                                 ######        ########################## #######             
                                 ######        ######################### ########             
                                 #######      ####### ################## ########             
                                  ######      #####    ################  #########            
                                  #######     #####    #############     #########            
                                   #######    ####     #####             ##########           
                                    #######   ###      #####             ##########           
                                     #######           #####             ##########           
                                     ########          #####             ##########           
                                      #########         ###              ##########           
                                       ########                           #########           
                                        ##########                          #######           
                                         ##########                   ###  ########           
                                          #############       #####################           
                                            #######################################           
                                             ######################################           
                                               ###################################            
                                                 ########################  #######            
                                                   ##################        ###              

Google+