?
Solved

RTF Report Generation

Posted on 2006-04-08
22
Medium Priority
?
1,648 Views
Last Modified: 2013-11-20
Hi to everyone!

I have a question regarding to the RTF format. Recently I've been working in a project in which I've found the need of creating some reports. I chose the RTF format (Word 2000 version) to do it 'cause it's quite easy to replace tags in a plain-text template (although to make several table rows I had to make some tricks because I didn't have enough time to learn the entire Word 2000/2002/2003 RTF specification).

I chose the Word RTF because it contains lots of features I want to use in my reports. Everything was going on smoothly until I needed to insert a graph in one of the reports. The graph couldn't be an image because it had to be dynamic (each report would have different data shown in the graphic) and I didn't want to draw it manually... I would take my focus too far from the real application. I chose the "Microsoft Office Excel Graph" object.

With that object I could have a table with the data shown in the graphic in a page and in the other page I'd have the graph. The object would only show the graph page. This way, while I was writing the RTF, I'd set the cell values to the ones I wanted and the graph would simply show the changes. That was the main idea...

I got stuck with 2 problems:

1- The object data was stored in Excel format (written in plaintext hexacode), so I didn't have a clue of where the values were stored and it was too much work to analyse (at least at this time) the entire XLS format specification.
2- The embedded object had a "{\result (...) }" section which stored a picture of the las "refresh" of the graph. It means that if I managed to change correctly the cell values in the data section, I'd still be seeing the old version of the graph until I double clicked the object and returned from it so it'd get "refreshed".

Now my question is: what is the simplest (but not so dirty) way to overcome these two problems and get my reports generated with the corresponding graphs?

I've tried to search in the Excel file format data for the cell values, but it doesn't seem to be really static... depending on the ranges of values written, it writes them in different places and some other data moved "randomly"...

Regarding to the 2nd point, I tried removing the entire { \result (...) } section and it simply left a small white square (it didn't have the previous size of the graph) and Word gave me a supposed "Memory Error", but it kept running. I could then double click the square and I'd get the Excel interfase (through OLE) and, when I returned from it, the square would have recovered its real size, but it remained white. If I saved the document and reopened it, the graph would be there again.

Well, that's all for now! Thanks in advance!
0
Comment
Question by:aa021097
  • 9
  • 8
  • 3
20 Comments
 
LVL 22

Assisted Solution

by:mahesh1402
mahesh1402 earned 200 total points
ID: 16406369
>>Now my question is: what is the simplest (but not so dirty) way to overcome these two problems and get my reports generated with the corresponding graphs?

How about using WORD / EXCEL Automation to generated related reports on the fly ? you need not know RTF / XLS file format to extract or write data to these files.

Some of VC++ related automation links
http://support.microsoft.com/default.aspx?scid=kb;en-us;199691
http://support.microsoft.com/support/KB/Articles/Q196/7/76.asp
http://www.codeproject.com/com/ComExcelImages.asp    <==
http://support.microsoft.com/?kbid=183369


Alternatively here is OLE automation of WORD which use ODBC to insert data into WORD files :
http://www.codeproject.com/com/word_ole_bm.asp <==


MAHESH
0
 
LVL 22

Expert Comment

by:mahesh1402
ID: 16406405
Alternate look at this 'Reading Excel files using ODBC' :
http://www.codeguru.com/Cpp/data/mfc_database/microsoftexcel/article.php/c1131/ <==


MAHESH



0
 

Author Comment

by:aa021097
ID: 16408384
It's not a bad idea to use Ole Automation, but I don't have time to reimplement the report generation engine right now...

I'd like to know how could I, having the excel data extracted from the OLE object (in the RTF file), have it loaded as en excel object (I've read something about the "OLELoadFromStream" function but I still don't know exactly how to use it), so I could modify the corresponding cells, and then get two things: the new excel data (probably using OLESaveToStream) and the corresponding { \result } section from it (containing the picture of the updated graph).

Having those two things I could just put them in my generated RTF file and it'd have the graph I want...
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 49

Expert Comment

by:DanRollins
ID: 16422035
I have no experience here, and perhaps I don't understand the issue, but can't you use
      CRichEditView::GetInPlaceActiveItem
to get a pointer to a
      CRichEditCntrItem
and end up at an
      IOleObject
which would allow you to call
     IOleObject::Update()
?
0
 

Author Comment

by:aa021097
ID: 16433311
Hi DanRollins!

No, the problem is that I'm not working with a CRichEditView or a CRichEditCtrl... I'm just generating a RTF file that can be read with Microsoft Word...
0
 
LVL 22

Expert Comment

by:mahesh1402
ID: 16433675
So why you just cant use ODBC to extract values from RTF/DOC/XLS from above sample links ??

MAHESH
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 16437693
I'd use Wordpad and embed an Excel Chart, then save the whole thing as an RTF file and see what Wordpad is doing that is different from whatever you are doing.
0
 

Author Comment

by:aa021097
ID: 16442878
Mahesh:
The problem is not READING data from the Excel file... first of all, I'm not supposed to have an Excel file... I just have a string that is the supposed OLE object data in hexacode... I know what the object contains 'cause I created it... the thing is: i want to programatically take the string, load it as an OLE object, modify the needed cells communicating with Excel, get the modified object, take a new string from it I could paste in the RTF code and obtain a new result (picture of the graph) I could also paste in the RTF code... by the way, there are two pictures: "shppict" and "nonshppict"... Just as I said before, I don't want to ask Word to do this for me because I know there is a way to do it... if Word can do it, then I can...

DanRollins:
I don't know if you understood what I want I'm asking, but I know what are the results of what Wordpad (in my case Word) does... now I want to make some modifications to make the graph look the way I want and get it embedded again...


Now... this is the dirty way I found to do ALMOST what I want:



[Got the data extracted just by simply copying the string without the first part (the one that contains the CLSID) and converted it to a RAW file]


//Modify the cells I want from the file:
_ApplicationPtr pExcel;

pExcel.CreateInstance(L"Excel.Application");

_WorkbookPtr pWorkbook = pExcel->Workbooks->Open(pszTempFile);  //Open my file

SheetsPtr pSheets = pExcel->GetWorksheets();

_WorksheetPtr pSheet = pSheets->GetItem(1);   //Get the second sheet (the one with the table)

RangePtr rRange = pSheet->GetRange(COleVariant("B2"), COleVariant("B2"));    //Modify
itoa(nVal1, pszNumber, 10);
rRange->PutValue2(COleVariant(pszNumber));

[...]

rRange = pSheet->GetRange(COleVariant("B8"), COleVariant("B8"));
itoa(nVal5, pszNumber, 10);
rRange->PutValue2(pszNumber);

pWorkbook->Save();

pWorkbook->Close();

pExcel->Quit();             //Done


//Now I open it as an OLE object so I can draw its result:
COleDocument pOleDoc;

COleClientItem ociItem(&pOleDoc);

bool bTest = ociItem.CreateFromFile(pszTempFile);

CMetaFileDC mfdcDC;

CDC *cdcDC = AfxGetMainWnd()->GetDC();

char pszTempPath2[MAX_PATH - 14];
char pszTempFile2[MAX_PATH + 1];

GetTempPath(MAX_PATH - 14, pszTempPath2);

GetTempFileName(pszTempPath, "", 0, pszTempFile2);

mfdcDC.CreateEnhanced(cdcDC, pszTempFile2, NULL, "Graph");    //Create a temp EnhMetafile

mfdcDC.SetAttribDC(cdcDC->m_hAttribDC);

ociItem.Draw(&mfdcDC, CRect(0, 0, 9601, 9257));

HENHMETAFILE hEnhMetafile = mfdcDC.CloseEnhanced();

DeleteEnhMetaFile(hEnhMetafile);

ociItem.Release();       //Done


Now I just read both files and append them this way:

CString sRTFString = "[.... previous RTF code ...]{\\object\\objemb\\objsetsize\\objw9079\\objh8806{\\*\\objclass Excel.Chart.8}{\\*\\objdata 01050000\r\n020000000e000000457863656c2e43686172742e3800000000000000000000"

sRTFString += [Excel File Size coded in two bytes in hexacode; e.g. "7a00"];

sRTFString += "00\r\n";

sRTFString += [I dump the Excel file in Hexacode];

sRTFString += "0105000000000000";    //I must add these 8 bytes so the OLE object works :S
                                                         //(They are stripped by Excel so I added them manually)

//I add the next part
sRTFString += "{\\result {\r\n\\f1\\insrsid9060762\\charrsid9523306 {\\*\\shppict{\\pict{\\*\\picprop\\shplid1033{\\sp{\\sn shapeType}{\\sv 75}}{\\sp{\\sn fFlipH}{\\sv 0}}{\\sp{\\sn fFlipV}{\\sv 0}}{\\sp{\\sn fLockAspectRatio}{\\sv 1}}{\\sp{\\sn pictureGray}{\\sv 0}}\r\n{\\sp{\\sn pictureBiLevel}{\\sv 0}}{\\sp{\\sn fRecolorFillAsPicture}{\\sv 0}}{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}{\\sp{\\sn fFilled}{\\sv 0}}{\\sp{\\sn fHitTestFill}{\\sv 1}}{\\sp{\\sn fillShape}{\\sv 1}}{\\sp{\\sn fillUseRect}{\\sv 0}}{\\sp{\\sn fNoFillHitTest}{\\sv 0}}\r\n{\\sp{\\sn fLine}{\\sv 0}}{\\sp{\\sn fPreferRelativeResize}{\\sv 1}}{\\sp{\\sn fReallyHidden}{\\sv 0}}{\\sp{\\sn fScriptAnchor}{\\sv 0}}{\\sp{\\sn fFakeMaster}{\\sv 0}}{\\sp{\\sn fCameFromImgDummy}{\\sv 0}}{\\sp{\\sn fLayoutInCell}{\\sv 1}}}\r\n\\picscalex100\\picscaley100\\piccropl0\\piccropr0\\piccropt0\\piccropb0\\picw16013\\pich15531\\picwgoal9078\\pichgoal8805\\emfblip\\bliptag254958471{\\*\\blipuid 0f325b87897de8e197d7c9ab244b8828}\r\n";

sRTFString += [Now I dump the Metafile];   //For the shppict

sRTFString += "}}{\\nonshppict{\\pict\\picscalex100\\picscaley100\\piccropl0\\piccropr0\\piccropt0\\piccropb0\r\n\\picw16087\\pich15558\\picwgoal9120\\pichgoal8820\\wmetafile8\\bliptag254958471\\blipupi96{\\*\\blipuid 0f325b87897de8e197d7c9ab244b8828}\r\n";

sRTFString += [Now I dump the Metafile again];   //For the nonshppict

sRTFString += "}}}}";   //Done, I can go on with the next of the RTF



This method has, at least, 5 problems:

1- I take the string myself, discarding the first part
2- I work over a file
3- I have to manually recompose the string, adding the last "0105000000000000" "magic bytes" I guess are part of the OLE encapsulation
4- I get a different slightly different result from the one I'd have If I had done it correctly (for example, I doesn't have a white frame)
5- I generate a fake nonshppict 'cause it's not in the same format as the shppict

Anyway, all of this problems are simply consequences of using the wrong method... I'm sure I must use OLELoadFromStream() to load the FULL string from the template RTF, work on the OLE object and then dump it back using OLESaveFromStream() (which, as the RTF Specification states, will generate the correct string readable by a RTF Reader)... I want to know what is the best way of doing this:

1- Load the string
2- Work on the OLE object, taking into account it is Excel, so I can modify the cells
3- Dump the string back
4- Get the correct nonshppict result from the Excel Graph
5- Get the correct shppict result from the Excel Graph


Note: now, by using the wrong method, my OLE object is seen by Word as "Microsoft Office Excel Worksheet" instead of "Microsoft Office Excel Graph" as it used to be...
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 16448748
It appears that you end up displaying a metafile -- a snapshot picture of what the chart looked like at the time of creation.  

No amount of changing the spreadsheet numbers will change that image.   By the time it is displayed in Word or WordPad, the spreadsheet itself is nowhere to be found.  You might be able to manipulate the RTF to change attributes of the picture, for instance perhaps, the scaling and sizing, but to actually change the spreadsheet (and affect the graph), it seems to me that you would need a program that accesses the  Excel automation object; that is, among other things, the recipient of the RTF file would need Excel installed on his computer.

-- Dan
0
 

Author Comment

by:aa021097
ID: 16449880
Hey DanRollins, I have question for you: HAVE YOU READ ALL WHAT I WROTE? :S

The image is just the { \result } part of what I'm asking...

Take a look at this:

1- Open Word and create a new document
2- Go to Insert->Object->Microsoft Excel Chart
3- Save the document as a RTF
4- Close Word
5- Open the file again in Word
6- Double click the Graph
7- Go to the second page
8- There you have the spreadsheet :S:S It's not a picture :S

If you look at the RTF format of that file, it'll look like this:

{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f37\froman\fcharset238\fprq2 Times New Roman CE;}
{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;}{\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden
Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid12662500}{\*\generator Micr
osoft Word 11.0.6568;}{\info{\title  }{\creatim\yr2006\mo4\dy13\hr18\min59}{\revtim\yr2006\mo4\dy13\hr19\min1}{\version1}{\edmins2}{\nofpages1}{\nofwords4}{\nofchars25}{\nofcharsws28}{\vern24579}}
\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot12662500\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12662500 {\object\objemb\objsetsize\objw8168\objh4522{\*\objclass Excel.Chart.8}


//HERE IS THE EXCEL OBJECT

{\*\objdata 01050000020000000e000000457863656c2e43686172742e3800000000000000000000460000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdffffff16000000feffffff2100000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000fefffffffeffffff18000000190000001a0000001b0000001c0000001d0000001e00
00001f00000020000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff020000002108020000000000c0000000000000460000000000000000000000005084
15c2455fc60103000000400300000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
0000000000000000000000001400000000000000030045005000520049004e0054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100002010100000004000000ffffffff0000000000000000000000000000000000000000000000000000
00000000000000000000040000006423000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
000000000000000000000000010000006900000000000000feffffff02000000fefffffffeffffff050000000600000007000000feffffff090000000a0000000b0000000c000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff010000020800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100feff030a0000ffffffff2108020000000000c0000000000000461d00
00004d6963726f736f6674204f666669636520457863656c20436861727400060000004269666638000e000000457863656c2e43686172742e3800f439b2710000000000000000000000000000000000000000000000000000000000000000000000000203000d0000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000feff0000050202000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d930000000980000000700000001000000400000000400000048000000080000005400000012000000600000000c00
0000780000000d00000084000000130000009000000002000000e40400001e0000000400000045474d001e0000000400000045474d001e000000100000004d6963726f736f667420457863656c004000000000f96bab455fc6014000000080b979c1455fc601030000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000010000006c0000004300000049000000de0700001f040000000000000000000044380000251f000020454d460000010064230000db01000005000000000000000000000000000000a00b0000880e0000d10000000601
00000000000000000000000000006830030070ff0300460000002c00000020000000454d462b014001001c000000100000000210c0db000000006801000068010000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000244001000c000000000000003040020010000000
040000000000803f214007000c00000000000000044000000c00000000000000180000000c00000000000000190000000c000000ffffff00140000000c0000000d000000120000000c000000020000002100000008000000220000000c000000ffffffff2100000008000000220000000c000000ffffffff0a0000001000
000000000000000000002100000008000000190000000c000000ffffff00180000000c00000000000000520000007001000001000000ceffffff00000000000000000000000090010000000000000000000041007200690061006c0000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001300bbf20030fa3f00000000ac00802000008020000028d4ac0028d4ac0078000000a3a9cb3026008a012e00000026008a0134e913006eac003000dcac00b8e913000c000000c5b00030b8e9130000dcac000c000000eaec0030b8e9130000dcac0006000000d035
3701dceb130006ee003000000000000000000000000000000000000000000000000041007200690061006c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000cdb70130000000000000000028e81300000000003d240ae200000000
26008a013d240ae2f00d213c00dcac002e00000026008a016476000800000000250000000c00000001000000250000000c0000000d000080250000000c00000001000000250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000190000000c000000ffffff001800
00000c000000000000001e000000180000000000000000000000030800006c040000250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000030800006c040000
27000000180000000200000000000000c0c0c00000000000250000000c00000002000000250000000c00000008000080180000000c000000c0c0c000190000000c00000000000000140000000c0000000d000000120000000c000000020000005600000030000000a200000067000000ec060000ba03000005000000a200
6700ec066700ec06ba03a200ba03a2006700260000001c0000000300000000000000000000000000000000000000250000000c00000003000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000
250000000c00000002000000250000000c00000003000000190000000c00000000000000180000000c000000c0c0c0001e00000018000000a200000063000000ec060000be0300001d0000001800000014070000a0010000df070000810200001b00000010000000a200000040030000190000000c000000ffffff001400
00000c0000000d000000120000000c000000010000003600000010000000ec060000400300001b00000010000000a2000000c70200003600000010000000ec060000c70200001b00000010000000a20000004d0200003600000010000000ec0600004d0200001b00000010000000a2000000d40100003600000010000000
ec060000d40100001b00000010000000a20000005a0100003600000010000000ec0600005a0100001b00000010000000a2000000e10000003600000010000000ec060000e10000001b00000010000000a2000000670000003600000010000000ec06000067000000250000000c00000007000080250000000c0000000000
0080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000002000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000000000000000000000030800006c0400001d00000018000000
14070000a0010000df07000081020000260000001c0000000400000000000000050000000000000080808000250000000c00000004000000280000000c000000030000001b00000010000000a200000067000000140000000c0000000d000000120000000c000000010000003600000010000000ec060000670000003600
000010000000ec060000ba0300003600000010000000a2000000ba0300003600000010000000a200000067000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000002000000
250000000c00000004000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000000000000000000000030800006c040000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c0000000100
0000250000000c00000002000000250000000c00000004000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000001400000014000000ef07000058040000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff21000000
08000000250000000c00000001000000250000000c00000002000000250000000c00000004000000190000000c000000ffffff00180000000c000000c0c0c0001e00000018000000a200000067000000ed060000ba030000250000000c00000007000080250000000c00000000000080250000000c0000000d0000802200
00000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000002000000250000000c00000004000000190000000c000000ffffff00180000000c000000c0c0c0001e00000018000000a20000005d000000f6060000ba030000260000001c00000003000000000000000500000000000000
00000000250000000c00000003000000280000000c00000004000000270000001800000004000000000000009999ff0000000000250000000c00000004000000280000000c00000002000000180000000c0000009999ff00140000000c0000000d000000120000000c000000020000005600000030000000ca0000009202
00000e010000b903000005000000ce0096020a0196020a01ba03ce00ba03ce0096025600000030000000d6010000190200001a020000b903000005000000da011d0216021d021602ba03da01ba03da011d025600000030000000e30200009f01000027030000b903000005000000e702a3012303a3012303ba03e702ba03
e702a3015600000030000000ef0300006202000033040000b903000005000000f30366022f0466022f04ba03f303ba03f30366025600000030000000fb040000920200003f050000b903000005000000ff0496023b0596023b05ba03ff04ba03ff049602560000003000000008060000e80100004c060000b90300000500
00000c06ec014806ec014806ba030c06ba030c06ec01270000001800000002000000000000009933660000000000250000000c00000002000000280000000c00000004000000180000000c000000993366005600000030000000060100001902000049010000b9030000050000000a011d0245011d024501ba030a01ba03
0a011d02560000003000000012020000ab02000056020000b9030000050000001602af025202af025202ba031602ba031602af0256000000300000001f030000f500000062030000b9030000050000002303f9005e03f9005e03ba032303ba032303f90056000000300000002b040000c30200006e040000b90300000500
00002f04c7026a04c7026a04ba032f04ba032f04c702560000003000000037050000190200007b050000b9030000050000003b051d0277051d027705ba033b05ba033b051d025600000030000000440600004902000087060000b90300000500000048064d0283064d028306ba034806ba0348064d022700000018000000
0400000000000000ffffcc0000000000250000000c00000004000000280000000c00000002000000180000000c000000ffffcc00560000003000000041010000c302000085010000b9030000050000004501c7028101c7028101ba034501ba034501c70256000000300000004e020000b701000092020000b90300000500
00005202bb018e02bb018e02ba035202ba035202bb0156000000300000005a030000620200009e030000b9030000050000005e0366029a0366029a03ba035e03ba035e03660256000000300000006604000019020000aa040000b9030000050000006a041d02a6041d02a604ba036a04ba036a041d025600000030000000
73050000c3020000b7050000b9030000050000007705c702b305c702b305ba037705ba037705c70256000000300000007f060000d0010000c3060000b9030000050000008306d401bf06d401bf06ba038306ba038306d401250000000c00000007000080250000000c00000000000080250000000c0000000d0000802200
00000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000003000000190000000c000000ffffff00180000000c000000ffffcc001e00000018000000a200000067000000ed060000ba030000250000000c00000007000080250000000c00000000000080
250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000003000000190000000c000000ffffff00180000000c000000ffffcc001e000000180000000000000000000000030800006c040000260000001c0000000200
000000000000000000000000000000000000250000000c00000002000000280000000c000000030000001b00000010000000a200000067000000140000000c0000000d000000120000000c000000010000003600000010000000a2000000ba0300001b0000001000000092000000ba0300003600000010000000a2000000
ba0300001b0000001000000092000000400300003600000010000000a2000000400300001b0000001000000092000000c70200003600000010000000a2000000c70200001b00000010000000920000004d0200003600000010000000a20000004d0200001b0000001000000092000000d40100003600000010000000a200
0000d40100001b00000010000000920000005a0100003600000010000000a20000005a0100001b0000001000000092000000e10000003600000010000000a2000000e10000001b0000001000000092000000670000003600000010000000a2000000670000001b00000010000000a2000000ba0300003600000010000000
ec060000ba0300001b00000010000000a2000000ca0300003600000010000000a2000000ba0300001b00000010000000ae010000ca0300003600000010000000ae010000ba0300001b00000010000000bb020000ca0300003600000010000000bb020000ba0300001b00000010000000c7030000ca030000360000001000
0000c7030000ba0300001b00000010000000d3040000ca0300003600000010000000d3040000ba0300001b00000010000000e0050000ca0300003600000010000000e0050000ba0300001b00000010000000ec060000ca0300003600000010000000ec060000ba030000250000000c00000007000080250000000c000000
00000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc001e000000180000000000000000000000030800006c040000250000000c00
000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc001e000000180000000000000000000000
030800006c040000180000000c00000000000000140000000c0000000d000000120000000c0000000100000054000000540000005f0000009c0300007a000000d4030000010000002fbbe0405860e1405f0000009c030000010000004c000000000000000000000000000000ffffffffffffffff50000000300000001c00
000054000000540000005f000000220300007a0000005a030000010000002fbbe0405860e1405f00000022030000010000004c000000000000000000000000000000ffffffffffffffff50000000350000001c000000540000005800000043000000a90200007a000000e1020000010000002fbbe0405860e14043000000
a9020000020000004c000000000000000000000000000000ffffffffffffffff50000000310030001c0000001c0000005400000058000000430000002f0200007a00000067020000010000002fbbe0405860e140430000002f020000020000004c000000000000000000000000000000ffffffffffffffff500000003100
35001c0000001c000000540000005800000043000000b60100007a000000ee010000010000002fbbe0405860e14043000000b6010000020000004c000000000000000000000000000000ffffffffffffffff50000000320030001c0000001c0000005400000058000000430000003c0100007a0000007401000001000000
2fbbe0405860e140430000003c010000020000004c000000000000000000000000000000ffffffffffffffff50000000320035001c0000001c000000540000005800000043000000c30000007a000000fb000000010000002fbbe0405860e14043000000c3000000020000004c000000000000000000000000000000ffff
ffffffffffff50000000330030001c0000001c000000540000005800000043000000490000007a00000081000000010000002fbbe0405860e1404300000049000000020000004c000000000000000000000000000000ffffffffffffffff50000000330035001c0000001c000000250000000c0000000700008025000000
0c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000030800006c0400002500
00000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e0000001800000000000000
00000000030800006c040000140000000c0000000d000000120000000c00000001000000540000006000000000010000e7030000500100001f040000010000002fbbe0405860e14000010000e7030000030000004c000000000000000000000000000000ffffffffffffffff540000004a0061006e000000190000001c00
00001c00000054000000600000000a020000e7030000600200001f040000010000002fbbe0405860e1400a020000e7030000030000004c000000000000000000000000000000ffffffffffffffff5400000046006500620000001f0000001c0000001c000000540000006000000016030000e70300006b0300001f040000
010000002fbbe0405860e14016030000e7030000030000004c000000000000000000000000000000ffffffffffffffff540000004d00610072000000290000001c00000011000000540000006000000026040000e7030000730400001f040000010000002fbbe0405860e14026040000e7030000030000004c0000000000
00000000000000000000ffffffffffffffff540000004100700072000000210000001c0000001100000054000000600000002b050000e7030000880500001f040000010000002fbbe0405860e1402b050000e7030000030000004c000000000000000000000000000000ffffffffffffffff540000004d00610079000000
290000001c0000001900000054000000600000003e060000e70300008e0600001f040000010000002fbbe0405860e1403e060000e7030000030000004c000000000000000000000000000000ffffffffffffffff540000004a0075006e000000190000001c0000001c000000250000000c00000007000080250000000c00
000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000030800006c04000027000000
180000000300000000000000ffffff0000000000250000000c00000003000000280000000c00000004000000180000000c000000ffffff00190000000c00000000000000140000000c0000000d000000120000000c000000020000002b0000001800000014070000a0010000de07000081020000250000000c0000000700
0080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000250000000c00000002000000190000000c00000000000000180000000c000000ffffff001e0000001800000015070000a1010000de070000
80020000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000250000000c00000002000000190000000c00000000000000180000000c000000ffffff001e0000001800
000015070000a1010000de07000080020000260000001c0000000400000000000000050000000000000000000000250000000c00000004000000280000000c00000002000000270000001800000002000000000000009999ff0000000000250000000c00000002000000280000000c00000003000000180000000c000000
9999ff00190000000c000000ffffff00140000000c0000000d000000120000000c000000020000002b0000001800000025070000b601000044070000d5010000180000000c00000000000000120000000c00000001000000540000006400000051070000aa010000c3070000e2010000010000002fbbe0405860e1405107
0000aa010000040000004c000000000000000000000000000000ffffffffffffffff5400000046006f006f0064001f0000001c0000001c0000001c000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c000000
01000000250000000c00000002000000250000000c00000004000000190000000c000000ffffff00180000000c000000000000001e0000001800000015070000a1010000de07000080020000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100
000008000000250000000c00000001000000250000000c00000002000000250000000c00000004000000190000000c000000ffffff00180000000c000000000000001e0000001800000015070000a1010000de07000080020000260000001c0000000300000000000000050000000000000000000000250000000c000000
03000000280000000c00000004000000270000001800000004000000000000009933660000000000250000000c00000004000000280000000c00000002000000180000000c00000099336600140000000c0000000d000000120000000c000000020000002b00000018000000250700000102000044070000200200001800
00000c00000000000000120000000c00000001000000540000006000000051070000f5010000ac0700002d020000010000002fbbe0405860e14051070000f5010000030000004c000000000000000000000000000000ffffffffffffffff540000004700610073000000270000001c00000019000000250000000c000000
07000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000003000000190000000c000000ffffff00180000000c000000000000001e0000001800000015070000a1010000de07
000080020000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000004000000250000000c00000003000000190000000c000000ffffff00180000000c000000000000001e000000
1800000015070000a1010000de07000080020000260000001c0000000200000000000000050000000000000000000000250000000c00000002000000280000000c0000000300000027000000180000000300000000000000ffffcc0000000000250000000c00000003000000280000000c00000004000000180000000c00
0000ffffcc00140000000c0000000d000000120000000c000000020000002b00000018000000250700004c020000440700006b020000180000000c00000000000000120000000c00000001000000540000006c0000005107000040020000cb07000078020000010000002fbbe0405860e140510700004002000005000000
4c000000000000000000000000000000ffffffffffffffff580000004d006f00740065006c000000290000001c0000000e0000001c0000000c000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c0000000100
0000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e0000001800000015070000a1010000de07000080020000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff21000000
08000000250000000c00000001000000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000030800006c040000250000000c00000007000080250000000c00000000000080250000000c0000000d0000802200
00000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000030800006c040000250000000c00000004000080280000000c00000003000000
250000000c00000007000080280000000c00000002000000250000000c0000000d000080220000000c000000ffffffff0900000010000000030800006c0400002100000008000000190000000c000000ffffff00180000000c00000000000000220000000c000000ffffffff0a0000001000000000000000000000002100
000008000000190000000c000000ffffff00180000000c00000000000000280000000c00000001000000220000000c000000ffffffff460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080460000001c00000010000000454d462b02400000
0c000000000000000e000000140000000000000010000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000200
0300000006000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000003000000060000000000000057006f0072006b0062006f006f006b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200
0200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000001700000062130000000000000500530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000000000000000000000000000000000000
280002010500000007000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000004000000c800000000000000050044006f00630075006d0065006e007400530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000
000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000800000018010000000000000908100000060500a019cd07c1c0000006030000e1000200b004c10002000000e20000005c00700003000045474d2020202020202020202020202020
202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202042000200b004610102000000c00100003d010400010002009c0002000e00de000800
400d000000000000190002000000120002000000130002000000af0102000000bc01020000003d001200a6ff20fec120dc143c0000000000010058024000020000008d00020000002200020000000e0002000100b70102000000da000200000031001a00c8000000ff7f900100000000002e050141007200690061006c00
31001a00c8000000ff7f900100000000002e050141007200690061006c0031001a00c8000000ff7f900100000000002e050141007200690061006c0031001a00c8000000ff7f900100000000002e050141007200690061006c0031001a00c8000000ff7f900100000000002e050141007200690061006c0031001a00c800
0000ff7f900100000000002e050141007200690061006c001e041c000500170000222422232c2323305f293b5c28222422232c2323305c291e04210006001c0000222422232c2323305f293b5b5265645d5c28222422232c2323305c291e04220007001d0000222422232c2323302e30305f293b5c28222422232c232330
2e30305c291e0427000800220000222422232c2323302e30305f293b5b5265645d5c28222422232c2323302e30305c291e0437002a003200005f282224222a20232c2323305f293b5f282224222a205c28232c2323305c293b5f282224222a20222d225f293b5f28405f291e042e0029002900005f282a20232c2323305f
293b5f282a205c28232c2323305c293b5f282a20222d225f293b5f28405f291e043f002c003a00005f282224222a20232c2323302e30305f293b5f282224222a205c28232c2323302e30305c293b5f282224222a20222d223f3f5f293b5f28405f291e0436002b003100005f282a20232c2323302e30305f293b5f282a20
5c28232c2323302e30305c293b5f282a20222d223f3f5f293b5f28405f29e000140000000000f5ff200000000000000000000000c020e000140001000000f5ff200000f40000000000000000c020e000140001000000f5ff200000f40000000000000000c020e000140002000000f5ff200000f40000000000000000c020
e000140002000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e00014000000
0000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff200000f40000000000000000c020e000140000000000f5ff2000
00f40000000000000000c020e0001400000000000100200000000000000000000000c020e000140001002b00f5ff200000f80000000000000000c020e000140001002900f5ff200000f80000000000000000c020e000140001002c00f5ff200000f80000000000000000c020e000140001002a00f5ff200000f800000000
00000000c020e000140001000900f5ff200000f80000000000000000c02093020400108003ff93020400118006ff93020400128004ff93020400138007ff93020400008000ff93020400148005ff60010200000085000e00400600000002060043686172743185000e009d100000000006005368656574318c0004000100
0100ae01040002000104170008000100000001000100c1010800c101000022be0100fc0041000900000009000000040000466f6f640300004761730500004d6f74656c0300004a616e0300004665620300004d61720300004170720300004d61790300004a756eff0012000800d40500000c000000070600003f00000063
0815006308000000000000000000001500000000000000520a0000000908100000062000a019cd07c1c000000603000014000000150000008300020000008400020000004d00440200004500500053004f004e0020005300740079006c007500730020004300360030002000530065007200690065007300000077eee677
3cdd0e00000000002060110001046004dc0066010f8b800702000100ea0a6f0864000100070068010200010068010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000002000000520300004c04000000000000030000000200000000000100040006000300000000000100b4000100000000000000020000000000000000000100000000000000000000000000040000000000
0000000000000000000000000000000000000100000003000000000000000000000001000000010000002a0000002a0000002a000000c6000000f40b0000780f0000680100006801000000000000444c4c4e616d6533323d455f4455313341452e444c4c00000000000000000000000000000100a00b0000880e00006400
a00b0000880e00000000000014000000000000000000000000000000000032000000ff00000001000000000000000000000000004500500053004f004e0020005300740079006c00750073002000430036003000200053006500720069006500730000000000000000000000000000000000000009040000000100000000
00000c0002002a0000002a0000002a000000c6000000a100220001006400010001000100000000000000000000000000e03f000000000000e03f010033000200010060100a00771f1c11c8000000050060100a00771f1c11c80001000600120002000000011002000000021010000000000000000000d03f9a01e87fe200
33100000a00004000100010064100800000001000000010003100c000300010006000600010000003310000051100f0000020000000007003a0000000001000d100c000000040146006f006f006400511013000102000000000b003b00000100060001000100511013000202000000000b003b0000010006000000000051
100800030100000000000006100800ffff000000000000331000005f1002000000341000004510020000003410000003100c000300010006000600010000003310000051100f0000020000000007003a0000000002000d100a0000000301470061007300511013000102000000000b003b00000100060002000200511013
000202000000000b003b0000010006000000000051100800030100000000000006100800ffff010001000000331000005f1002000000341000004510020000003410000003100c000300010006000600010000003310000051100f0000020000000007003a0000000003000d100e00000005014d006f00740065006c0051
1013000102000000000b003b00000100060003000300511013000202000000000b003b0000010006000000000051100800030100000000000006100800ffff020002000000331000005f10020000003410000045100200000034100000441004000c000000241002000200251020000202010000000000dbffffffbcffff
ff0000000000000000b1004d0070310000331000004f101400020002000000000000000000000000000000000026100200050051100800000100000000000034100000241002000300251020000202010000000000dbffffffbcffffff0000000000000000b1004d0070310000331000004f101400020002000000000000
0000000000000000000000261002000600511008000001000000000000341000004610020001004110120000000c01000020010000a10c00004f0c0000331000004f101400020002004a00000089000000620d00008e0e00001d101200000000000000000000000000000000000000331000002010080001000100010001
006210120000000000010000000100000000000000ef001e101e0002000301000000000000000000000000000000000000000023004d000000341000001d101200010000000000000000000000000000000000331000001f102a000000000000000000000000000000000000000000000000000000000000000000000000
00000000001f011e101e0002000301000000000000000000000000000000000000000023004d00000021100200010007100c00000000000000ffff09004d00341000003510000032100400000003003310000007100c008080800000000000000017000a101000c0c0c000000000000100000016004f0034100000141014
000000000000000000000000000000000000000000331000001710060000009600000022100a0000000000000000000f0015101400ff0d000091050000830100005f03000003011f00331000004f10140005000200ff0d0000910500000000000000000000251020000202010000000000dbffffffbcffffff0000000000
000000b1004d0090060000331000004f1014000200020000000000000000000000000000000000511008000001000000000000341000003410000034100000341000003410000000020e00000000000600000000000300000065100200020004020f000000000000000300014a0061006e0004020f000000010000000300
014a0061006e0004020f000000020000000300014a0061006e0004020f0001000000000003000146006500620004020f0001000100000003000146006500620004020f0001000200000003000146006500620004020f000200000000000300014d006100720004020f000200010000000300014d006100720004020f0002
00020000000300014d006100720004020f0003000000000003000141007000720004020f0003000100000003000141007000720004020f0003000200000003000141007000720004020f000400000000000300014d006100790004020f000400010000000300014d006100790004020f000400020000000300014d006100
790004020f000500000000000300014a0075006e0004020f000500010000000300014a0075006e0004020f000500020000000300014a0075006e0065100200010003020e00000000000000000000000000284003020e00000001000000000000000000314003020e00000002000000000000000000244003020e00010000
000000000000000000314003020e00010001000000000000000000264003020e00010002000000000000000000354003020e00020000000000000000000000364003020e000200010000000000000000003d4003020e000200020000000000000000002c4003020e000300000000000000000000002c4003020e00030001
000000000000000000244003020e00030002000000000000000000314003020e00040000000000000000000000284003020e00040001000000000000000000314003020e00040002000000000000000000244003020e00050000000000000000000000334003020e000500010000000000000000002e4003020e00050002
00000000000000000034406510020003003e020a00050602000000000000000a0000000908100000061000a019cd07c1c00000060300000d00020001000c00020064000f000200010011000200000010000800fca9f1d24d62503f5f00020001002a00020000002b00020000008200020001008000080000000000000000
00250204000000ff0081000200c1041400000015000000830002000000840002000000a10022000000ff00010001000100440000000000000000000000e03f000000000000e03f20d155000200080000020e00000000000700000000000400000008021000000000000400ff000000000000010f00080210000100000004
00ff000000000000010f0008021000020000000400ff000000000000010f0008021000030000000400ff000000000000010f0008021000040000000400ff000000000000010f0008021000050000000400ff000000000000010f0008021000060000000400ff000000000000010f0001020600000000000f00fd000a0000
0001000f0000000000fd000a00000002000f0001000000fd000a00000003000f0002000000fd000a00010000000f0003000000bd001800010001000f00000028400f00000031400f00000024400300fd000a00020000000f0004000000bd001800020001000f00000031400f00000026400f00000035400300fd000a0003
0000000f0005000000bd001800030001000f00000036400f0000003d400f0000002c400300fd000a00040000000f0006000000bd001800040001000f0000002c400f00000024400f00000031400300fd000a00050000000f0007000000bd001800050001000f00000028400f00000031400f00000024400300fd000a0006
0000000f0008000000bd001800060001000f00000033400f0000002e400f00000034400300d7001200bc010000780034002a002a002a002a002a003e021200b600000000004000000000000000000000001d000f00030000000000000100000000000000ef0006000000370000000a000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000feff000005020200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000900000001000000500000000f0000005800000017000000680000000b00000070000000100000007800000013000000800000001600
0000880000000d000000900000000c000000ae00000002000000e40400001e0000000800000045474da90000000003000000a8190b000b000000000000000b000000000000000b000000000000000b000000000000001e10000002000000070000005368656574310007000000436861727431000c100000040000001e00
00000b000000576f726b7368656574730003000000010000001e00000007000000436861727473000300000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000105000000000000}


//HERE IS THE RESULT PART

{\result {\insrsid12662500


//THIS IS THE shppict PART OF THE RESULT

{\*\shppict{\pict{\*\picprop\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}
{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}
{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
\picw14406\pich7975\picwgoal8167\pichgoal4521\emfblip\bliptag-1736025217{\*\blipuid 98865b7f048f32adce0d316a042bfd41}010000006c0000001100000012000000190200001a01000000000000000000006b3500007e1d000020454d460000010050220000c40100000500000000000000
00000000000000000005000000040000400100000001000000000000000000000000000000e2040000e80300460000002c00000020000000454d462b01400100
1c000000100000000210c0db010000006000000060000000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000180000000c00000000000000
190000000c000000ffffff00140000000c0000000d000000120000000c000000020000002100000008000000220000000c000000ffffffff2100000008000000
220000000c000000ffffffff0a0000001000000000000000000000002100000008000000190000000c000000ffffff00180000000c0000000000000022000000
0c000000ffffffff2100000008000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e010000
220000000c000000ffffffff2100000008000000190000000c000000ffffff00180000000c000000000000001e00000018000000000000000000000023020000
2e01000027000000180000000100000000000000c0c0c00000000000250000000c00000001000000250000000c00000008000080180000000c000000c0c0c000
190000000c00000000000000140000000c0000000d000000120000000c000000020000005600000030000000290000001a000000db0100000001000005000000
29001a00db011a00db0100012900000129001a00260000001c0000000200000000000000000000000000000000000000250000000c0000000200000025000000
0c00000007000080250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000002000000
190000000c00000000000000180000000c000000c0c0c0001e000000180000002900000016000000db010000040100001d00000018000000e60100006d000000
1a020000ac0000001b0000001000000029000000df000000190000000c000000ffffff00140000000c0000000d000000120000000c0000000100000036000000
10000000db010000df0000001b0000001000000029000000be0000003600000010000000db010000be0000001b00000010000000290000009d00000036000000
10000000db0100009d0000001b00000010000000290000007d0000003600000010000000db0100007d0000001b00000010000000290000005c00000036000000
10000000db0100005c0000001b00000010000000290000003b0000003600000010000000db0100003b0000001b00000010000000290000001a00000036000000
10000000db0100001a000000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c000000
01000000250000000c00000002000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000000000000000000000230200002e010000
1d00000018000000e60100006d0000001a020000ac000000260000001c0000000300000000000000010000000000000080808000250000000c00000003000000
280000000c000000020000001b00000010000000290000001a000000140000000c0000000d000000120000000c000000010000003600000010000000db010000
1a0000003600000010000000db01000000010000360000001000000029000000000100003600000010000000290000001a000000250000000c00000007000080
250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000190000000c000000
ffffff00180000000c000000c0c0c0001e000000180000000000000000000000230200002e010000250000000c00000007000080250000000c00000000000080
220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000
c0c0c0001e0000001800000005000000050000001e02000029010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff
2100000008000000250000000c00000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0c0001e00000018000000
290000001a000000dc01000000010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff210000000800000025000000
0c00000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000002900000018000000dd010000
00010000260000001c0000000200000000000000010000000000000000000000250000000c00000002000000280000000c000000030000002700000018000000
03000000000000009999ff0000000000250000000c00000003000000280000000c00000001000000180000000c0000009999ff00140000000c0000000d000000
120000000c00000002000000560000003000000035000000b100000045000000ff000000050000003500b1004500b10045000001350000013500b10056000000
300000007d000000900000008d000000ff000000050000007d0090008d0090008d0000017d0000017d0090005600000030000000c60000006f000000d6000000
ff00000005000000c6006f00d6006f00d6000001c6000001c6006f0056000000300000000e010000a40000001e010000ff000000050000000e01a4001e01a400
1e0100010e0100010e01a400560000003000000056010000b100000066010000ff000000050000005601b1006601b10066010001560100015601b10056000000
300000009f01000083000000af010000ff000000050000009f018300af018300af0100019f0100019f0183002700000018000000010000000000000099336600
00000000250000000c00000001000000280000000c00000003000000180000000c000000993366005600000030000000450000009000000055000000ff000000
05000000450090005500900055000001450000014500900056000000300000008d000000b80000009e000000ff000000050000008d00b8009e00b8009e000001
8d0000018d00b8005600000030000000d600000041000000e6000000ff00000005000000d6004100e6004100e6000001d6000001d60041005600000030000000
1e010000be0000002e010000ff000000050000001e01be002e01be002e0100011e0100011e01be005600000030000000660100009000000077010000ff000000
0500000066019000770190007701000166010001660190005600000030000000af0100009d000000bf010000ff00000005000000af019d00bf019d00bf010001
af010001af019d0027000000180000000300000000000000ffffcc0000000000250000000c00000003000000280000000c00000001000000180000000c000000
ffffcc00560000003000000055000000be00000065000000ff000000050000005500be006500be0065000001550000015500be0056000000300000009e000000
76000000ae000000ff000000050000009e007600ae007600ae0000019e0000019e0076005600000030000000e6000000a4000000f6000000ff00000005000000
e600a400f600a400f6000001e6000001e600a40056000000300000002e010000900000003e010000ff000000050000002e0190003e0190003e0100012e010001
2e019000560000003000000077010000be00000087010000ff000000050000007701be008701be0087010001770100017701be005600000030000000bf010000
7d000000cf010000ff00000005000000bf017d00cf017d00cf010001bf010001bf017d00250000000c00000007000080250000000c0000000000008022000000
0c000000ffffffff2100000008000000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc00
1e00000018000000290000001a000000dc01000000010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff21000000
08000000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc001e0000001800000000000000
00000000230200002e010000260000001c0000000100000000000000000000000000000000000000250000000c00000001000000280000000c00000002000000
1b00000010000000290000001a000000140000000c0000000d000000120000000c00000001000000360000001000000029000000000100005200000070010000
02000000f3ffffff00000000000000000000000090010000000000000000000041007200690061006c0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064760008000000000000000000000000
0000000000000000000000000d0000000000000068dd13006eac00307c5fac00ecdd13000c000000c5b00030ecdd13007c5fac000c000000eaec0030ecdd1300
7c5fac0006000000dcde1300e4df130006ee0030470000006cdf130000000000000000000100000000000000f4db130047000000b4de130087393b77a8663977
ffffffff9e663977d1740030ce06240047000000000000006cdf1300000000000000000001000000ce062400cdb7013000000000000000003d6d003000000000
1a280a3700000000000000001a280a372a29015d7c5fac00f3ffffff000000006476000800000000250000000c000000020000001b0000001000000025000000
00010000360000001000000029000000000100001b0000001000000025000000df000000360000001000000029000000df0000001b0000001000000025000000
be000000360000001000000029000000be0000001b00000010000000250000009d0000003600000010000000290000009d0000001b0000001000000025000000
7d0000003600000010000000290000007d0000001b00000010000000250000005c0000003600000010000000290000005c0000001b0000001000000025000000
3b0000003600000010000000290000003b0000001b00000010000000250000001a0000003600000010000000290000001a0000001b0000001000000029000000
000100003600000010000000db010000000100001b000000100000002900000004010000360000001000000029000000000100001b0000001000000071000000
04010000360000001000000071000000000100001b00000010000000ba000000040100003600000010000000ba000000000100001b0000001000000002010000
04010000360000001000000002010000000100001b000000100000004a0100000401000036000000100000004a010000000100001b0000001000000093010000
04010000360000001000000093010000000100001b00000010000000db010000040100003600000010000000db01000000010000250000000c00000007000080
250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c000000
03000000250000000c00000001000000190000000c000000ffffff00180000000c000000ffffcc001e000000180000000000000000000000230200002e010000
250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c000000
02000000250000000c00000003000000250000000c00000001000000190000000c000000ffffff00180000000c000000ffffcc001e0000001800000000000000
00000000230200002e010000180000000c00000000000000140000000c0000000d000000120000000c00000001000000540000005400000018000000f8000000
1e00000007010000010000000000c8410000c84118000000f8000000010000004c000000000000000000000000000000ffffffffffffffff5000000030000000
07000000540000005400000018000000d70000001e000000e6000000010000000000c8410000c84118000000d7000000010000004c0000000000000000000000
00000000ffffffffffffffff500000003500000007000000540000005800000011000000b60000001e000000c5000000010000000000c8410000c84111000000
b6000000020000004c000000000000000000000000000000ffffffffffffffff5000000031003000070000000700000054000000580000001100000095000000
1e000000a4000000010000000000c8410000c8411100000095000000020000004c000000000000000000000000000000ffffffffffffffff5000000031003500
0700000007000000540000005800000011000000750000001e00000084000000010000000000c8410000c8411100000075000000020000004c00000000000000
0000000000000000ffffffffffffffff50000000320030000700000007000000540000005800000011000000540000001e00000063000000010000000000c841
0000c8411100000054000000020000004c000000000000000000000000000000ffffffffffffffff500000003200350007000000070000005400000058000000
11000000330000001e00000042000000010000000000c8410000c8411100000033000000020000004c000000000000000000000000000000ffffffffffffffff
50000000330030000700000007000000540000005800000011000000120000001e00000021000000010000000000c8410000c841110000001200000002000000
4c000000000000000000000000000000ffffffffffffffff50000000330035000700000007000000250000000c00000007000080250000000c00000000000080
250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c000000
01000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e010000250000000c00000007000080
250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c000000
03000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e010000
140000000c0000000d000000120000000c000000010000005400000060000000430000000b010000560000001a010000010000000000c8410000c84143000000
0b010000030000004c000000000000000000000000000000ffffffffffffffff540000004a0061006e0000000600000007000000070000005400000060000000
8b0000000b010000a00000001a010000010000000000c8410000c8418b0000000b010000030000004c000000000000000000000000000000ffffffffffffffff
5400000046006500620000000800000007000000070000005400000060000000d30000000b010000e80000001a010000010000000000c8410000c841d3000000
0b010000030000004c000000000000000000000000000000ffffffffffffffff540000004d006100720000000b00000007000000040000005400000060000000
1c0100000b0100002f0100001a010000010000000000c8410000c8411c0100000b010000030000004c000000000000000000000000000000ffffffffffffffff
5400000041007000720000000900000007000000040000005400000060000000630100000b0100007b0100001a010000010000000000c8410000c84163010000
0b010000030000004c000000000000000000000000000000ffffffffffffffff540000004d006100790000000b00000007000000070000005400000060000000
ad0100000b010000c00100001a010000010000000000c8410000c841ad0100000b010000030000004c000000000000000000000000000000ffffffffffffffff
540000004a0075006e000000060000000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d00008022000000
0c000000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c00000001000000190000000c000000ffffff00
180000000c000000000000001e000000180000000000000000000000230200002e01000027000000180000000400000000000000ffffff000000000025000000
0c00000004000000280000000c00000003000000180000000c000000ffffff00190000000c00000000000000140000000c0000000d000000120000000c000000
020000002b00000018000000e60100006d00000019020000ac000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080
220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c00000001000000190000000c000000
00000000180000000c000000ffffff001e00000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c00000000000080
250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c000000
01000000190000000c00000000000000180000000c000000ffffff001e00000018000000e70100006e00000019020000ab000000260000001c00000003000000
00000000010000000000000000000000250000000c00000003000000280000000c00000001000000270000001800000001000000000000009999ff0000000000
250000000c00000001000000280000000c00000004000000180000000c0000009999ff00190000000c000000ffffff00140000000c0000000d00000012000000
0c000000020000002b00000018000000eb01000075000000f20100007c000000180000000c00000000000000120000000c000000010000005400000064000000
f601000070000000120200007f000000010000000000c8410000c841f601000070000000040000004c000000000000000000000000000000ffffffffffffffff
5400000046006f006f00640008000000070000000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080
220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000001000000250000000c00000003000000190000000c000000
ffffff00180000000c000000000000001e00000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c00000000000080
250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000001000000250000000c000000
03000000190000000c000000ffffff00180000000c000000000000001e00000018000000e70100006e00000019020000ab000000260000001c00000004000000
00000000010000000000000000000000250000000c00000004000000280000000c00000003000000270000001800000003000000000000009933660000000000
250000000c00000003000000280000000c00000001000000180000000c00000099336600140000000c0000000d000000120000000c000000020000002b000000
18000000eb0100008a000000f201000091000000180000000c00000000000000120000000c000000010000005400000060000000f6010000850000000d020000
94000000010000000000c8410000c841f601000085000000030000004c000000000000000000000000000000ffffffffffffffff540000004700610073000000
0a0000000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff21000000
08000000250000000c00000002000000250000000c00000003000000250000000c00000004000000190000000c000000ffffff00180000000c00000000000000
1e00000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c00000000000080250000000c0000000d00008022000000
0c000000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c00000004000000190000000c000000ffffff00
180000000c000000000000001e00000018000000e70100006e00000019020000ab000000260000001c0000000100000000000000010000000000000000000000
250000000c00000001000000280000000c0000000400000027000000180000000400000000000000ffffcc0000000000250000000c0000000400000028000000
0c00000003000000180000000c000000ffffcc00140000000c0000000d000000120000000c000000020000002b00000018000000eb0100009f000000f2010000
a6000000180000000c00000000000000120000000c00000001000000540000006c000000f60100009a00000015020000a9000000010000000000c8410000c841
f60100009a000000050000004c000000000000000000000000000000ffffffffffffffff580000004d006f00740065006c0000000b0000000700000004000000
0700000003000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000
250000000c00000002000000250000000c00000004000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e000000
18000000e70100006e00000019020000ab000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000
ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c00000001000000190000000c000000ffffff0018000000
0c000000000000001e000000180000000000000000000000230200002e010000250000000c00000007000080250000000c00000000000080250000000c000000
0d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c0000000100000019000000
0c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e010000250000000c00000004000080280000000c000000
04000000250000000c00000007000080280000000c00000001000000250000000c0000000d000080220000000c000000ffffffff090000001000000023020000
2e0100002100000008000000190000000c000000ffffff00180000000c00000000000000220000000c000000ffffffff0a000000100000000000000000000000
2100000008000000190000000c000000ffffff00180000000c00000000000000220000000c000000ffffffff460000003400000028000000454d462b2a400000
24000000180000000000803f00000080000000800000803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}


//THIS IS THE nonshppict PART OF THE RESULT

{\nonshppict{\pict\picscalex99\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
\picw14473\pich7990\picwgoal8205\pichgoal4530\wmetafile8\bliptag-1736025217\blipupi96{\*\blipuid 98865b7f048f32adce0d316a042bfd41}
010009000003411b000008001610000000001610000026060f002220574d46430100000000000100447d00000000020000000020000050020000502200000100
00006c0000001100000012000000190200001a01000000000000000000006b3500007e1d000020454d460000010050220000c401000005000000000000000000
0000000000000005000000040000400100000001000000000000000000000000000000e2040000e80300460000002c00000020000000454d462b014001001c00
0000100000000210c0db010000006000000060000000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000180000000c000000000000001900
00000c000000ffffff00140000000c0000000d000000120000000c000000020000002100000008000000220000000c000000ffffffff21000000080000002200
00000c000000ffffffff0a0000001000000000000000000000002100000008000000190000000c000000ffffff00180000000c00000000000000220000000c00
0000ffffffff2100000008000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e0100002200
00000c000000ffffffff2100000008000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e01
000027000000180000000100000000000000c0c0c00000000000250000000c00000001000000250000000c00000008000080180000000c000000c0c0c0001900
00000c00000000000000140000000c0000000d000000120000000c000000020000005600000030000000290000001a000000db01000000010000050000002900
1a00db011a00db0100012900000129001a00260000001c0000000200000000000000000000000000000000000000250000000c00000002000000250000000c00
000007000080250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c000000020000001900
00000c00000000000000180000000c000000c0c0c0001e000000180000002900000016000000db010000040100001d00000018000000e60100006d0000001a02
0000ac0000001b0000001000000029000000df000000190000000c000000ffffff00140000000c0000000d000000120000000c00000001000000360000001000
0000db010000df0000001b0000001000000029000000be0000003600000010000000db010000be0000001b00000010000000290000009d000000360000001000
0000db0100009d0000001b00000010000000290000007d0000003600000010000000db0100007d0000001b00000010000000290000005c000000360000001000
0000db0100005c0000001b00000010000000290000003b0000003600000010000000db0100003b0000001b00000010000000290000001a000000360000001000
0000db0100001a000000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c0000000100
0000250000000c00000002000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000000000000000000000230200002e0100001d00
000018000000e60100006d0000001a020000ac000000260000001c0000000300000000000000010000000000000080808000250000000c000000030000002800
00000c000000020000001b00000010000000290000001a000000140000000c0000000d000000120000000c000000010000003600000010000000db0100001a00
00003600000010000000db01000000010000360000001000000029000000000100003600000010000000290000001a000000250000000c000000070000802500
00000c00000000000080220000000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000190000000c000000ffff
ff00180000000c000000c0c0c0001e000000180000000000000000000000230200002e010000250000000c00000007000080250000000c000000000000802200
00000c000000ffffffff2100000008000000250000000c00000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0
c0001e0000001800000005000000050000001e02000029010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff2100
000008000000250000000c00000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000002900
00001a000000dc01000000010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff2100000008000000250000000c00
000001000000250000000c00000003000000190000000c000000ffffff00180000000c000000c0c0c0001e000000180000002900000018000000dd0100000001
0000260000001c0000000200000000000000010000000000000000000000250000000c00000002000000280000000c0000000300000027000000180000000300
0000000000009999ff0000000000250000000c00000003000000280000000c00000001000000180000000c0000009999ff00140000000c0000000d0000001200
00000c00000002000000560000003000000035000000b100000045000000ff000000050000003500b1004500b10045000001350000013500b100560000003000
00007d000000900000008d000000ff000000050000007d0090008d0090008d0000017d0000017d0090005600000030000000c60000006f000000d6000000ff00
000005000000c6006f00d6006f00d6000001c6000001c6006f0056000000300000000e010000a40000001e010000ff000000050000000e01a4001e01a4001e01
00010e0100010e01a400560000003000000056010000b100000066010000ff000000050000005601b1006601b10066010001560100015601b100560000003000
00009f01000083000000af010000ff000000050000009f018300af018300af0100019f0100019f01830027000000180000000100000000000000993366000000
0000250000000c00000001000000280000000c00000003000000180000000c000000993366005600000030000000450000009000000055000000ff0000000500
0000450090005500900055000001450000014500900056000000300000008d000000b80000009e000000ff000000050000008d00b8009e00b8009e0000018d00
00018d00b8005600000030000000d600000041000000e6000000ff00000005000000d6004100e6004100e6000001d6000001d600410056000000300000001e01
0000be0000002e010000ff000000050000001e01be002e01be002e0100011e0100011e01be005600000030000000660100009000000077010000ff0000000500
000066019000770190007701000166010001660190005600000030000000af0100009d000000bf010000ff00000005000000af019d00bf019d00bf010001af01
0001af019d0027000000180000000300000000000000ffffcc0000000000250000000c00000003000000280000000c00000001000000180000000c000000ffff
cc00560000003000000055000000be00000065000000ff000000050000005500be006500be0065000001550000015500be0056000000300000009e0000007600
0000ae000000ff000000050000009e007600ae007600ae0000019e0000019e0076005600000030000000e6000000a4000000f6000000ff00000005000000e600
a400f600a400f6000001e6000001e600a40056000000300000002e010000900000003e010000ff000000050000002e0190003e0190003e0100012e0100012e01
9000560000003000000077010000be00000087010000ff000000050000007701be008701be0087010001770100017701be005600000030000000bf0100007d00
0000cf010000ff00000005000000bf017d00cf017d00cf010001bf010001bf017d00250000000c00000007000080250000000c00000000000080220000000c00
0000ffffffff2100000008000000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc001e00
000018000000290000001a000000dc01000000010000250000000c00000007000080250000000c00000000000080220000000c000000ffffffff210000000800
0000250000000c00000003000000250000000c00000002000000190000000c000000ffffff00180000000c000000ffffcc001e00000018000000000000000000
0000230200002e010000260000001c0000000100000000000000000000000000000000000000250000000c00000001000000280000000c000000020000001b00
000010000000290000001a000000140000000c0000000d000000120000000c000000010000003600000010000000290000000001000052000000700100000200
0000f3ffffff00000000000000000000000090010000000000000000000041007200690061006c00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000647600080000000000000000000000000000
000000000000000000000d0000000000000068dd13006eac00307c5fac00ecdd13000c000000c5b00030ecdd13007c5fac000c000000eaec0030ecdd13007c5f
ac0006000000dcde1300e4df130006ee0030470000006cdf130000000000000000000100000000000000f4db130047000000b4de130087393b77a8663977ffff
ffff9e663977d1740030ce06240047000000000000006cdf1300000000000000000001000000ce062400cdb7013000000000000000003d6d0030000000001a28
0a3700000000000000001a280a372a29015d7c5fac00f3ffffff000000006476000800000000250000000c000000020000001b00000010000000250000000001
0000360000001000000029000000000100001b0000001000000025000000df000000360000001000000029000000df0000001b0000001000000025000000be00
0000360000001000000029000000be0000001b00000010000000250000009d0000003600000010000000290000009d0000001b00000010000000250000007d00
00003600000010000000290000007d0000001b00000010000000250000005c0000003600000010000000290000005c0000001b00000010000000250000003b00
00003600000010000000290000003b0000001b00000010000000250000001a0000003600000010000000290000001a0000001b00000010000000290000000001
00003600000010000000db010000000100001b000000100000002900000004010000360000001000000029000000000100001b00000010000000710000000401
0000360000001000000071000000000100001b00000010000000ba000000040100003600000010000000ba000000000100001b00000010000000020100000401
0000360000001000000002010000000100001b000000100000004a0100000401000036000000100000004a010000000100001b00000010000000930100000401
0000360000001000000093010000000100001b00000010000000db010000040100003600000010000000db01000000010000250000000c000000070000802500
00000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c0000000300
0000250000000c00000001000000190000000c000000ffffff00180000000c000000ffffcc001e000000180000000000000000000000230200002e0100002500
00000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c0000000200
0000250000000c00000003000000250000000c00000001000000190000000c000000ffffff00180000000c000000ffffcc001e00000018000000000000000000
0000230200002e010000180000000c00000000000000140000000c0000000d000000120000000c00000001000000540000005400000018000000f80000001e00
000007010000010000000000c8410000c84118000000f8000000010000004c000000000000000000000000000000ffffffffffffffff50000000300000000700
0000540000005400000018000000d70000001e000000e6000000010000000000c8410000c84118000000d7000000010000004c00000000000000000000000000
0000ffffffffffffffff500000003500000007000000540000005800000011000000b60000001e000000c5000000010000000000c8410000c84111000000b600
0000020000004c000000000000000000000000000000ffffffffffffffff50000000310030000700000007000000540000005800000011000000950000001e00
0000a4000000010000000000c8410000c8411100000095000000020000004c000000000000000000000000000000ffffffffffffffff50000000310035000700
000007000000540000005800000011000000750000001e00000084000000010000000000c8410000c8411100000075000000020000004c000000000000000000
000000000000ffffffffffffffff50000000320030000700000007000000540000005800000011000000540000001e00000063000000010000000000c8410000
c8411100000054000000020000004c000000000000000000000000000000ffffffffffffffff5000000032003500070000000700000054000000580000001100
0000330000001e00000042000000010000000000c8410000c8411100000033000000020000004c000000000000000000000000000000ffffffffffffffff5000
0000330030000700000007000000540000005800000011000000120000001e00000021000000010000000000c8410000c8411100000012000000020000004c00
0000000000000000000000000000ffffffffffffffff50000000330035000700000007000000250000000c00000007000080250000000c000000000000802500
00000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c0000000100
0000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e010000250000000c000000070000802500
00000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c0000000300
0000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e000000180000000000000000000000230200002e0100001400
00000c0000000d000000120000000c000000010000005400000060000000430000000b010000560000001a010000010000000000c8410000c841430000000b01
0000030000004c000000000000000000000000000000ffffffffffffffff540000004a0061006e00000006000000070000000700000054000000600000008b00
00000b010000a00000001a010000010000000000c8410000c8418b0000000b010000030000004c000000000000000000000000000000ffffffffffffffff5400
000046006500620000000800000007000000070000005400000060000000d30000000b010000e80000001a010000010000000000c8410000c841d30000000b01
0000030000004c000000000000000000000000000000ffffffffffffffff540000004d006100720000000b000000070000000400000054000000600000001c01
00000b0100002f0100001a010000010000000000c8410000c8411c0100000b010000030000004c000000000000000000000000000000ffffffffffffffff5400
000041007000720000000900000007000000040000005400000060000000630100000b0100007b0100001a010000010000000000c8410000c841630100000b01
0000030000004c000000000000000000000000000000ffffffffffffffff540000004d006100790000000b00000007000000070000005400000060000000ad01
00000b010000c00100001a010000010000000000c8410000c841ad0100000b010000030000004c000000000000000000000000000000ffffffffffffffff5400
00004a0075006e000000060000000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c00
0000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c00000001000000190000000c000000ffffff001800
00000c000000000000001e000000180000000000000000000000230200002e01000027000000180000000400000000000000ffffff0000000000250000000c00
000004000000280000000c00000003000000180000000c000000ffffff00190000000c00000000000000140000000c0000000d000000120000000c0000000200
00002b00000018000000e60100006d00000019020000ac000000250000000c00000007000080250000000c00000000000080250000000c0000000d0000802200
00000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c00000001000000190000000c0000000000
0000180000000c000000ffffff001e00000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c000000000000802500
00000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000004000000250000000c0000000100
0000190000000c00000000000000180000000c000000ffffff001e00000018000000e70100006e00000019020000ab000000260000001c000000030000000000
0000010000000000000000000000250000000c00000003000000280000000c00000001000000270000001800000001000000000000009999ff00000000002500
00000c00000001000000280000000c00000004000000180000000c0000009999ff00190000000c000000ffffff00140000000c0000000d000000120000000c00
0000020000002b00000018000000eb01000075000000f20100007c000000180000000c00000000000000120000000c000000010000005400000064000000f601
000070000000120200007f000000010000000000c8410000c841f601000070000000040000004c000000000000000000000000000000ffffffffffffffff5400
000046006f006f00640008000000070000000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d0000802200
00000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000001000000250000000c00000003000000190000000c000000ffff
ff00180000000c000000000000001e00000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c000000000000802500
00000c0000000d000080220000000c000000ffffffff2100000008000000250000000c00000002000000250000000c00000001000000250000000c0000000300
0000190000000c000000ffffff00180000000c000000000000001e00000018000000e70100006e00000019020000ab000000260000001c000000040000000000
0000010000000000000000000000250000000c00000004000000280000000c000000030000002700000018000000030000000000000099336600000000002500
00000c00000003000000280000000c00000001000000180000000c00000099336600140000000c0000000d000000120000000c000000020000002b0000001800
0000eb0100008a000000f201000091000000180000000c00000000000000120000000c000000010000005400000060000000f6010000850000000d0200009400
0000010000000000c8410000c841f601000085000000030000004c000000000000000000000000000000ffffffffffffffff5400000047006100730000000a00
00000700000007000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff210000000800
0000250000000c00000002000000250000000c00000003000000250000000c00000004000000190000000c000000ffffff00180000000c000000000000001e00
000018000000e70100006e00000019020000ab000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c00
0000ffffffff2100000008000000250000000c00000002000000250000000c00000003000000250000000c00000004000000190000000c000000ffffff001800
00000c000000000000001e00000018000000e70100006e00000019020000ab000000260000001c00000001000000000000000100000000000000000000002500
00000c00000001000000280000000c0000000400000027000000180000000400000000000000ffffcc0000000000250000000c00000004000000280000000c00
000003000000180000000c000000ffffcc00140000000c0000000d000000120000000c000000020000002b00000018000000eb0100009f000000f2010000a600
0000180000000c00000000000000120000000c00000001000000540000006c000000f60100009a00000015020000a9000000010000000000c8410000c841f601
00009a000000050000004c000000000000000000000000000000ffffffffffffffff580000004d006f00740065006c0000000b00000007000000040000000700
000003000000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff21000000080000002500
00000c00000002000000250000000c00000004000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e0000003e01
000026060f007202574d464301000000000001000000000000000200000050020000000000005022000018000000e70100006e00000019020000ab0000002500
00000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff2100000008000000250000000c0000000200
0000250000000c00000004000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e00000018000000000000000000
0000230200002e010000250000000c00000007000080250000000c00000000000080250000000c0000000d000080220000000c000000ffffffff210000000800
0000250000000c00000002000000250000000c00000004000000250000000c00000001000000190000000c000000ffffff00180000000c000000000000001e00
0000180000000000000000000000230200002e010000250000000c00000004000080280000000c00000004000000250000000c00000007000080280000000c00
000001000000250000000c0000000d000080220000000c000000ffffffff0900000010000000230200002e0100002100000008000000190000000c000000ffff
ff00180000000c00000000000000220000000c000000ffffffff0a0000001000000000000000000000002100000008000000190000000c000000ffffff001800
00000c00000000000000220000000c000000ffffffff460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000
803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000040000000301
0800050000000b0200000000050000000c022e01230205000000090200000000050000000102ffffff000400000004010d000400000002010200030000001e00
040000002701ffff030000001e00040000002701ffff030000001e00050000000102ffffff0005000000090200000000040000002701ffff030000001e000500
00000102ffffff0005000000090200000000040000002c0100000700000016042e01230200000000040000002701ffff030000001e00050000000102ffffff00
05000000090200000000040000002c0100000700000016042e0123020000000007000000fc020000c0c0c0000000040000002d01000008000000fa0205000000
0000ffffff00040000002d010100050000000902c0c0c000050000000102000000000400000004010d0004000000020102000e0000002403050029001a00db01
1a00db0100012900000129001a0008000000fa0200000000000000000000040000002d01020008000000fa0200000000000000000000040000002d0103000700
0000fc020000ffffff000000040000002d010400040000002701ffff030000001e00040000002d010000040000002d0102000500000001020000000005000000
0902c0c0c000040000002c0100000700000016040401db0116002900040000002c0100000700000016040401db0116002900050000001402df00290005000000
0102ffffff000400000004010d000400000002010100050000001302df00db01050000001402be002900050000001302be00db010500000014029d0029000500
000013029d00db010500000014027d0029000500000013027d00db010500000014025c0029000500000013025c00db010500000014023b002900050000001302
3b00db010500000014021a0029000500000013021a00db01040000002d010300040000002d010400040000002701ffff030000001e00040000002d0100000400
00002d010200050000000102ffffff00050000000902c0c0c000040000002c0100000700000016042e01230200000000040000002c0100000700000016042e01
230200000000070000001504ac001a026d00e60108000000fa0200000100000080808000040000002d01050004000000f00102000500000014021a0029000400
000004010d0004000000020101000500000013021a00db010500000013020001db01050000001302000129000500000013021a002900040000002d0103000400
00002d010400040000002701ffff030000001e00040000002d010000040000002d010500050000000102ffffff00050000000902c0c0c000040000002c010000
0700000016042e01230200000000040000002d010300040000002d010400040000002701ffff030000001e00040000002d010000040000002d01050005000000
0102ffffff00050000000902c0c0c000040000002c01000007000000160429011e0205000500040000002d010300040000002d010400040000002701ffff0300
00001e00040000002d010000040000002d010500050000000102ffffff00050000000902c0c0c000040000002c0100000700000016040001dc011a0029000400
00002d010300040000002d010400040000002701ffff030000001e00040000002d010000040000002d010500050000000102ffffff00050000000902c0c0c000
040000002c0100000700000016040001dd011800290008000000fa0200000100000000000000040000002d01020004000000f001050007000000fc0200009999
ff000000040000002d01050004000000f00100000500000009029999ff000400000004010d0004000000020102000e000000240305003500b1004500b1004500
0001350000013500b1000e000000240305007d0090008d0090008d0000017d0000017d0090000e00000024030500c6006f00d6006f00d6000001c6000001c600
6f000e000000240305000e01a4001e01a4001e0100010e0100010e01a4000e000000240305005601b1006601b10066010001560100015601b1000e0000002403
05009f018300af018300af0100019f0100019f01830007000000fc020000993366000000040000002d01000004000000f0010500050000000902993366000e00
00002403050045009000550090005500000145000001450090000e000000240305008d00b8009e00b8009e0000018d0000018d00b8000e00000024030500d600
4100e6004100e6000001d6000001d60041000e000000240305001e01be002e01be002e0100011e0100011e01be000e0000002403050066019000770190007701
000166010001660190000e00000024030500af019d00bf019d00bf010001af010001af019d0007000000fc020000ffffcc000000040000002d01050004000000
f0010000050000000902ffffcc000e000000240305005500be006500be0065000001550000015500be000e000000240305009e007600ae007600ae0000019e00
00019e0076000e00000024030500e600a400f600a400f6000001e6000001e600a4000e000000240305002e0190003e0190003e0100012e0100012e0190000e00
0000240305007701be008701be0087010001770100017701be000e00000024030500bf017d00cf017d00cf010001bf010001bf017d00040000002d0103000400
00002d010400040000002701ffff030000001e00040000002d010500040000002d010200050000000102ffffff00050000000902ffffcc00040000002c010000
0700000016040001dc011a002900040000002d010300040000002d010400040000002701ffff030000001e00040000002d010500040000002d01020005000000
0102ffffff00050000000902ffffcc00040000002c0100000700000016042e0123020000000008000000fa0200000000000000000000040000002d0100000400
0000f00102000500000014021a0029000400000004010d000400000002010100050000001302000129001c000000fb02f3ff0000000000009001000000000000
0000417269616c000000000000000000000000000000000000000000000000000000040000002d01020005000000140200012500050000001302000129000500
00001402df002500050000001302df002900050000001402be002500050000001302be0029000500000014029d0025000500000013029d002900050000001402
7d0025000500000013027d0029000500000014025c0025000500000013025c0029000500000014023b0025000500000013023b0029000500000014021a002500
0500000013021a002900050000001402000129000500000013020001db0105000000140204012900050000001302000129000500000014020401710005000000
1302000171000500000014020401ba000500000013020001ba00050000001402040102010500000013020001020105000000140204014a010500000013020001
4a0105000000140204019301050000001302000193010500000014020401db010500000013020001db01040000002d010300040000002d0104001c000000fb02
1000070000000000bc02000000000102022253797374656d0000000000000000000000000000000000000000000000000000040000002d010600040000002701
ffff030000001e00040000002d010200040000002d010500040000002d010000050000000102ffffff00050000000902ffffcc00040000002c01000007000000
16042e01230200000000040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200040000002d010500
040000002d010000050000000102ffffff00050000000902ffffcc00040000002c0100000700000016042e012302000000000500000009020000000004000000
04010d00040000000201010009000000320af80018000100000030af070009000000320ad70018000100000035af07000a000000320ab6001100020000003130
070007000a000000320a95001100020000003135070007000a000000320a75001100020000003230070007000a000000320a5400110002000000323507000700
0a000000320a33001100020000003330070007000a000000320a1200110002000000333507000700040000002d010300040000002d010400040000002d010600
040000002701ffff030000001e00040000002d010200040000002d010500040000002d010000050000000102ffffff0005000000090200000000040000002c01
00000700000016042e01230200000000040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d0102000400
00002d010500040000002d010000050000000102ffffff0005000000090200000000040000002c0100000700000016042e012302000000000400000004010d00
04000000020101000c000000320a0b014300030000004a616e000600070007000c000000320a0b018b0003000000466562000800070007000c000000320a0b01
d300030000004d6172000b00070004000c000000320a0b011c0103000000417072000900070004000c000000320a0b016301030000004d6179000b0007000700
0c000000320a0b01ad01030000004a756e00060007000700040000002d010300040000002d010400040000002d010600040000002701ffff030000001e000400
00002d010200040000002d010500040000002d010000050000000102ffffff0005000000090200000000040000002c0100000700000016042e01230200000000
07000000fc020000ffffff000000040000002d01070004000000f0010500050000000902ffffff00050000000102000000000400000004010d00040000000201
0200070000001b04ad001a026d00e601040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d0102000400
00002d010700040000002d01000005000000010200000000050000000902ffffff00040000002c010000070000001604ab0019026e00e701040000002d010300
040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200040000002d010700040000002d01000005000000010200000000
050000000902ffffff00040000002c010000070000001604ab0019026e00e70108000000fa0200000100000000000000040000002d01050004000000f0010000
07000000fc0200009999ff000000040000002d01000004000000f00107000500000009029999ff00050000000102ffffff000400000004010d00040000000201
0200070000001b047d00f3017500eb010500000009020000000004000000020101000d000000320a7000f60104000000466f6f64080007000700070004000000
2d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200040000002d010000040000002d010500050000000102
ffffff0005000000090200000000040000002c010000070000001604ab0019026e00e701040000002d010300040000002d010400040000002d01060004000000
2701ffff030000001e00040000002d010200040000002d010000040000002d010500050000000102ffffff0005000000090200000000040000002c0100000700
00001604ab0019026e00e70108000000fa0200000100000000000000040000002d01070004000000f001050007000000fc020000993366000000040000002d01
050004000000f0010000050000000902993366000400000004010d000400000002010200070000001b049200f3018a00eb010500000009020000000004000000
020101000c000000320a8500f60103000000476173000a0007000700040000002d010300040000002d010400040000002d010600040000002701ffff03000000
1e00040000002d010200040000002d010500040000002d010700050000000102ffffff0005000000090200000000040000002c010000070000001604ab001902
6e00e701040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200040000002d010500040000002d01
0700050000000102ffffff0005000000090200000000040000002c010000070000001604ab0019026e00e70108000000fa020000010000000000000004000000
2d01000004000000f001070007000000fc020000ffffcc000000040000002d01070004000000f0010500050000000902ffffcc000400000004010d0004000000
02010200070000001b04a700f3019f00eb010500000009020000000004000000020101000f000000320a9a00f601050000004d6f74656c000b00070004000700
0300040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200040000002d010700040000002d010000
050000000102ffffff0005000000090200000000040000002c010000070000001604ab0019026e00e701040000002d010300040000002d010400040000002d01
0600040000002701ffff030000001e00040000002d010200040000002d010700040000002d010000050000000102ffffff000500000009020000000004000000
2c0100000700000016042e01230200000000040000002d010300040000002d010400040000002d010600040000002701ffff030000001e00040000002d010200
040000002d010700040000002d010000050000000102ffffff0005000000090200000000040000002c0100000700000016042e0123020000000007000000fc02
0000000000000000040000002d01050004000000f0010700040000002d01030004000000f0010000040000002d010600040000002701ffff030000001e000500
00000102ffffff0005000000090200000000040000002701ffff030000001e00050000000102ffffff0005000000090200000000040000002701ffff030000000000}}


//END OF THE RESLT

}}


//END OF THE RTF

}}{\insrsid12662500
\par }}


I hope this makes my previous post clearer...
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 16450059
Is your goal to be able to display the graph (and make visible changes to it) on a computer that does not have Excel installed?
0
 

Author Comment

by:aa021097
ID: 16450117
Yes, but It's not the matter... The RTF file is created by a server and then sent to any client...

Excel is installed in the server and, if I create correctly the result part, it can then be viewed in both types of computer (the ones that have Excel installed, and the ones that don't)...

Anyway, I say it again: THAT IS NOT THE PROBLEM... it isn't a development problem, but a programming one...

The program is working correctly just as I described previously, but I'm not happy with the solution I found... I think I've explained it correcly and in a VERY detailed way... If you read carefully what I wrote, you'd get the idea...
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 16483332
You are trying to modify the RTF directly/manually.  Whenever I've tried that, I've run into strange behaviors.

Here is how I'd approach this problem:

I'd cut and paste source code from the WORDPAD sample to create a program that implemented CRichEditView.  The I'd stream in the template file that included the pre-built embedded chart.  Then I'd access methods of the embedded "Microsoft Office Excell Chart" object to modify that object (setting cell values, etc.) Then I'd force an update, then I'd output the result.  Both the incoming template and the outgoing stream can be handled without physically saving to the filesystem.

The result would be a valid and complete RTF document (including correctly-embedded {objdata} and {result} sections)  that could be saved to disk or passed on to some client application.

I'd look into this further, but you appear to be wedded to the idea of working with the RTF data directly... and like I say, I've never found that to be a worthwhile endeavor.

-- Dan
0
 

Author Comment

by:aa021097
ID: 16484299
Hi Dan!

Thanks for you post; I've been taking a look at Worpad's Source Code...

There are some problems with this approach:

- It needs the implementation of a CRichEditView
- It's limited to CRichEditView's (Wordpad's) RTF specification => I need some of the Microsoft Word RTF Specification's features, such as page breaks
- It would require me so many changes right now and, in that case, it would be better to do everything using Microsoft Word OLE Automation

Just as I told you, the RTF file is generated by a server executable and then sent to the clients so they can open it in Word, edit if needed, and then print it... The file is being generated correctly right now and it's working as expected (graph included) using the approach I described some posts before... the thing is that I know the way I'm doing it is not the right one... probably in some time I'll take one of these two approaches:

a- Use Word OLE Automation
b- Write a full RTF writing class

At least at this moment I just want to know how does the CRichEditView to understand/parse the {\object} and {\result} fields and then regenerate them... I'm sure it uses the functions OleLoadFromStream and OleSaveToStream but, at least by now, I don't know how...

In the case I chose to take the (B) approach in some time, it'll be extremely necesary for me to understand this problem or I won't be able to generate really "perfect" RTFs. And, of course, I surely won't be using the CRichEditView class to help me...

The thing is not to be wedded to the idea of working with the RTF data directly, the thing is that, if I took one of the other methods, I'd surely solve it but I wouldn't have understand how does Wordpad (using CRichEditView) or Word (using a very more complex class) to generate and read those fields correctly... and that was my question...

I know Word does it and I'm also sure it isn't so difficult... I just want to know how...

Well, that's all by now...

Thanks again...
0
 
LVL 49

Accepted Solution

by:
DanRollins earned 800 total points
ID: 16490483
>> I just want to know how does the CRichEditView to understand/parse the
      {\object} and {\result} fields and then regenerate them...

That takes place behind the scenes... somewhere deep inside of the RE control (and not in the CRichEditView code that is available for viewing).  The functionality is opaque to the user -- who just streams in the RTF text, accesses the objects, and then requests the control to generate the right format when it streams them out.

It appears that you are on the right track about OLESaveToStream, which is mentioned explicitly here:

   Rich Text Format (RTF) Specification,version 1.6
   http://latex2rtf.sourceforge.net/rtfspec.html
and specifically
    http://latex2rtf.sourceforge.net/rtfspec_7.html#rtfspec_25

...as the method that the RE control uses to generate the bytes that go into the relevant tags.

There are some clues in google groups, for instance, this:
     http://groups.google.com/group/microsoft.public.vc.mfc/browse_thread/thread/26c112b623bba1db/2d19e874b5851c2c

in which the author says (of reading the object data):

1 Implement COleDocument and COleClientItem classes
2 open and read RTF file until You found *\objdata tag. object data is stored
   in text hex format, ie each OLE data byte is represented by 2 bytes.
   Reject first line, till sequence d0 cf 11 e0 .....  Output to a new file all bytes
   including d0 cf 11 e0 till "}" character. (You will need to ignore carriage
   return 0D 0A pairs).
3 Use StgOpenStorage function to get pointer to a new storage - new file
   You created
4 Use OleLoad with pointer to opened storage to load object

WHich confirms some of what you have been trying.  I presume that a reverse of that procedure would work for generating the {objdata} hex bytes.

In this thread, one of the responders indicated the same general I dea that I presented:  Use a tool to load the RTF then use that tool's interfaces to the resulting objects:
     http://groups.google.com/group/microsoft.public.word.vba.general/browse_thread/thread/46258c09d022d3bf/6f101a2ccaf89ad3

I'll see if I can find any example code for using OLESaveToStream and get back to you.

-- Dan
0
 
LVL 49

Assisted Solution

by:DanRollins
DanRollins earned 800 total points
ID: 16490912
Here are two EE threads that address similar issues:

   From Disk File to IStream through OleSaveToStream
   http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_21179006.html

   Problems extracting an OLE Object from a Rich-Text (RTF) File by parsing the file
   http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_21167478.html

and an MSDN article that shows how to use OleSaveToStream
   Saving an ADO Recordset to an IStream
   http://support.microsoft.com/default.aspx?scid=kb;EN-US;242249
0
 

Author Comment

by:aa021097
ID: 16512859
Hi Dan,

Thanks for your posts... I had already seen the EE threads you pointed me...

I'll try to get something clean out of all this data and get back...
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 16663134
Did you ever make any progress on this?
0
 

Author Comment

by:aa021097
ID: 16882135
Hi everyone!

Sorry for disappearing these weeks...

I've been working with your answers, but I couldn't manage to get something clean from what you told me... the functions OLELoadFromStream and OLESaveToStream don't seem to work or I couldn't manage to get them work... the two EE articles pointed were not completely solved...

Does anybody have a clue on how to make them work?

Thanks...
0
 

Author Comment

by:aa021097
ID: 17303067
Allright, I was just waiting to see if anyone answered what I was asking...

I'll split the points 'though I didn't get the full answer...

Thanks anyway.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses
Course of the Month16 days, 7 hours left to enroll

850 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question