ࡱ> LOIJKY bjbj..  L\L\x<pp4   h " ^"%j&j&j&n+4--D$9.**|..9j&j&N969696. j&j&96.9696F]j&.+6/mTd0b4bbp-".966.J.---995---....b---------p> :   TITLE \* MERGEFORMAT PHPExcel User Documentation  SUBJECT \* MERGEFORMAT Reading Spreadsheet Files Contents  TOC \o "1-3" \h \z \u  HYPERLINK \l "_Toc381527112" PHPExcel User Documentation Reading Spreadsheet Files  PAGEREF _Toc381527112 \h 1  HYPERLINK \l "_Toc381527113" 1. Spreadsheet File Formats  PAGEREF _Toc381527113 \h 1  HYPERLINK \l "_Toc381527114" 2. Security  PAGEREF _Toc381527114 \h 3  HYPERLINK \l "_Toc381527115" 3. Loading a Spreadsheet File  PAGEREF _Toc381527115 \h 4  HYPERLINK \l "_Toc381527116" 4. Creating a Reader and Loading a Spreadsheet File  PAGEREF _Toc381527116 \h 5  HYPERLINK \l "_Toc381527117" 5. Spreadsheet Reader Options  PAGEREF _Toc381527117 \h 6  HYPERLINK \l "_Toc381527118" 5.1. Reading Only Data from a Spreadsheet File  PAGEREF _Toc381527118 \h 6  HYPERLINK \l "_Toc381527119" 5.2. Reading Only Named WorkSheets from a File  PAGEREF _Toc381527119 \h 7  HYPERLINK \l "_Toc381527120" 5.3. Reading Only Specific Columns and Rows from a File (Read Filters)  PAGEREF _Toc381527120 \h 8  HYPERLINK \l "_Toc381527121" 5.4. Combining Multiple Files into a Single PHPExcel Object  PAGEREF _Toc381527121 \h 11  HYPERLINK \l "_Toc381527122" 5.5. Combining Read Filters with the setSheetIndex() method to split a large CSV file across multiple Worksheets  PAGEREF _Toc381527122 \h 12  HYPERLINK \l "_Toc381527123" 5.6. Pipe or Tab Separated Value Files  PAGEREF _Toc381527123 \h 14  HYPERLINK \l "_Toc381527124" 5.7. A Brief Word about the Advanced Value Binder  PAGEREF _Toc381527124 \h 15  HYPERLINK \l "_Toc381527125" 6. Error Handling  PAGEREF _Toc381527125 \h 16  HYPERLINK \l "_Toc381527126" 7. Helper Methods  PAGEREF _Toc381527126 \h 17  Spreadsheet File Formats PHPExcel can read a number of different spreadsheet file formats, although not all features are supported by all of the readers. Check the Functionality Cross-Reference document (Functionality Cross-Reference.xls) for a list that identifies which features are supported by which readers. Currently, PHPExcel supports the following File Types for Reading: Excel5 The Microsoft Excel Binary file format (BIFF5 and BIFF8) is a binary file format that was used by Microsoft Excel between versions 95 and 2003. The format is supported (to various extents) by most spreadsheet programs. BIFF files normally have an extension of .xls. Documentation describing the format can be found online at  HYPERLINK "http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx" http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx or from  HYPERLINK "http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/%5bMS-XLS%5d.pdf" http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/[MS-XLS].pdf (as a downloadable PDF). Excel2003XML Microsoft Excel 2003 included options for a file format called SpreadsheetML. This file is a zipped XML document. It is not very common, but its core features are supported. Documentation for the format can be found at  HYPERLINK "http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx" http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx though its sadly rather sparse in its detail. Excel2007 Microsoft Excel 2007 shipped with a new file format, namely Microsoft Office Open XML SpreadsheetML, and Excel 2010 extended this still further with its new features such as sparklines. These files typically have an extension of .xlsx. This format is based around a zipped collection of eXtensible Markup Language (XML) files. Microsoft Office Open XML SpreadsheetML is mostly standardized in ECMA 376 ( HYPERLINK "http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm" http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm) and ISO 29500. OOCalc aka Open Document Format (ODF) or OASIS, this is the OpenOffice.org XML File Format for spreadsheets. It comprises a zip archive including several components all of which are text files, most of these with markup in the eXtensible Markup Language (XML). It is the standard file format for OpenOffice.org Calc and StarCalc, and files typically have an extension of .ods. The published specification for the file format is available from the OASIS Open Office XML Format Technical Committee web page ( HYPERLINK "http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office" \l "technical" http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical). Other information is available from the OpenOffice.org XML File Format web page ( HYPERLINK "http://xml.openoffice.org/general.html" http://xml.openoffice.org/general.html), part of the OpenOffice.org project. SYLK This is the Microsoft Multiplan Symbolic Link Interchange (SYLK) file format. Multiplan was a predecessor to Microsoft Excel. Files normally have an extension of .slk. While not common, there are still a few applications that generate SYLK files as a cross-platform option, because (despite being limited to a single worksheet) it is a simple format to implement, and supports some basic data and cell formatting options (unlike CSV files). Gnumeric The Gnumeric file format is used by the Gnome Gnumeric spreadsheet application, and typically files have an extension of .gnumeric. The file contents are stored using eXtensible Markup Language (XML) markup, and the file is then compressed using the GNU project's gzip compression library.  HYPERLINK "http://projects.gnome.org/gnumeric/doc/file-format-gnumeric.shtml" http://projects.gnome.org/gnumeric/doc/file-format-gnumeric.shtml CSV Comma Separated Value (CSV) file format is a common structuring strategy for text format files. In CSV flies, each line in the file represents a row of data and (within each line of the file) the different data fields (or columns) are separated from one another using a comma (,). If a data field contains a comma, then it should be enclosed (typically in quotation marks ("). Sometimes tabs \t or the pipe symbol (|) are used as separators instead of a comma. Because CSV is a text-only format, it doesn't support any data formatting options. Security XML-based formats such as OfficeOpen XML, Excel2003 XML, OASIS and Gnumeric are susceptible to XML External Entity Processing (XXE) injection attacks (for an explanation of XXE injection see  HYPERLINK "http://websec.io/2012/08/27/Preventing-XEE-in-PHP.html" http://websec.io/2012/08/27/Preventing-XEE-in-PHP.html) when reading spreadsheet files. This can lead to: Disclosure whether a file is existent Server Side Request Forgery Command Execution (depending on the installed PHP wrappers) To prevent this, PHPExcel sets libxml_disable_entity_loader to true for the XML-based Readers by default. Loading a Spreadsheet File The simplest way to load a workbook file is to let PHPExcel's IO Factory identify the file type and load it, calling the static load() method of the PHPExcel_IOFactory class. $inputFileName='./sampleData/example1.xls'; /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=PHPExcel_IOFactory::load($inputFileName); See Examples/Reader/exampleReader01.php for a working example of this code. The load() method will attempt to identify the file type, and instantiate a loader for that file type; using it to load the file and store the data and any formatting in a PHPExcel object. The method makes an initial guess at the loader to instantiate based on the file extension; but will test the file before actually executing the load: so if (for example) the file is actually a CSV file that has been given a .xls extension (quite a common practise), it will reject the Excel5 loader that it would normally use for a .xls file; and test the file using the other loaders until it finds the appropriate loader, and then use that to read the file. While easy to implement in your code, and you don't need to worry about the file type; this isn't the most efficient method to load a file; and it lacks the flexibility to configure the loader in any way before actually reading the file into a PHPExcel object. Creating a Reader and Loading a Spreadsheet File If you know the file type of the spreadsheet file that you need to load, you can instantiate a new reader object for that file type, then use the reader's load() method to read the file to a PHPExcel object. It is possible to instantiate the reader objects for each of the different supported filetype by name. However, you may get unpredictable results if the file isn't of the right type (e.g. it is a CSV with an extension of .xls), although this type of exception should normally be trapped. $inputFileName='./sampleData/example1.xls'; /**CreateanewExcel5Reader**/ $objReader=newPHPExcel_Reader_Excel5(); //$objReader=newPHPExcel_Reader_Excel2007(); //$objReader=newPHPExcel_Reader_Excel2003XML(); //$objReader=newPHPExcel_Reader_OOCalc(); //$objReader=newPHPExcel_Reader_SYLK(); //$objReader=newPHPExcel_Reader_Gnumeric(); //$objReader=newPHPExcel_Reader_CSV(); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader02.php for a working example of this code. Alternatively, you can use the IO Factory's createReader() method to instantiate the reader object for you, simply telling it the file type of the reader that you want instantiating. $inputFileType='Excel5'; //$inputFileType='Excel2007'; //$inputFileType='Excel2003XML'; //$inputFileType='OOCalc'; //$inputFileType='SYLK'; //$inputFileType='Gnumeric'; //$inputFileType='CSV'; $inputFileName='./sampleData/example1.xls'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader03.php for a working example of this code. If you're uncertain of the filetype, you can use the IO Factory's identify() method to identify the reader that you need, before using the createReader() method to instantiate the reader object. $inputFileName='./sampleData/example1.xls'; /**Identifythetypeof$inputFileName**/ $inputFileType=PHPExcel_IOFactory::identify($inputFileName); /**CreateanewReaderofthetypethathasbeenidentified **/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader04.php for a working example of this code. Spreadsheet Reader Options Once you have created a reader object for the workbook that you want to load, you have the opportunity to set additional options before executing the load() method. Reading Only Data from a Spreadsheet File If you're only interested in the cell values in a workbook, but don't need any of the cell formatting information, then you can set the reader to read only the data values and any formulae from each cell using the setReadDataOnly() method. $inputFileType='Excel5'; $inputFileName='./sampleData/example1.xls'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**AdvisetheReaderthatweonlywanttoloadcelldata**/ $objReader->setReadDataOnly(true); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader05.php for a working example of this code. It is important to note that Workbooks (and PHPExcel) store dates and times as simple numeric values: they can only be distinguished from other numeric values by the format mask that is applied to that cell. When setting read data only to true, PHPExcel doesn't read the cell format masks, so it is not possible to differentiate between dates/times and numbers. The Gnumeric loader has been written to read the format masks for date values even when read data only has been set to true, so it can differentiate between dates/times and numbers; but this change hasn't yet been implemented for the other readers. Reading Only Data from a Spreadsheet File applies to Readers: Excel2007 YES Excel5 YES Excel2003XML YES OOCalc YES SYLK NO Gnumeric YES CSV NO Reading Only Named WorkSheets from a File If your workbook contains a number of worksheets, but you are only interested in reading some of those, then you can use the setLoadSheetsOnly() method to identify those sheets you are interested in reading. To read a single sheet, you can pass that sheet name as a parameter to the setLoadSheetsOnly() method. $inputFileType='Excel5'; $inputFileName='./sampleData/example1.xls'; $sheetname='DataSheet#2'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**AdvisetheReaderofwhichWorkSheetswewanttoload**/ $objReader->setLoadSheetsOnly($sheetname); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader07.php for a working example of this code. If you want to read more than just a single sheet, you can pass a list of sheet names as an array parameter to the setLoadSheetsOnly() method. $inputFileType='Excel5'; $inputFileName='./sampleData/example1.xls'; $sheetnames=array('DataSheet#1','DataSheet#3'); /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**AdvisetheReaderofwhichWorkSheetswewanttoload**/ $objReader->setLoadSheetsOnly($sheetnames); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader08.php for a working example of this code. To reset this option to the default, you can call the setLoadAllSheets() method. $inputFileType='Excel5'; $inputFileName='./sampleData/example1.xls'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**AdvisetheReadertoloadallWorksheets**/ $objReader->setLoadAllSheets(); /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader06.php for a working example of this code. Reading Only Named WorkSheets from a File applies to Readers: Excel2007 YES Excel5 YES Excel2003XML YES OOCalc YES SYLK NO Gnumeric YES CSV NO Reading Only Specific Columns and Rows from a File (Read Filters) If you are only interested in reading part of a worksheet, then you can write a filter class that identifies whether or not individual cells should be read by the loader. A read filter must implement the PHPExcel_Reader_IReadFilter interface, and contain a readCell() method that accepts arguments of $column, $row and $worksheetName, and return a boolean true or false that indicates whether a workbook cell identified by those arguments should be read or not. $inputFileType='Excel5'; $inputFileName='./sampleData/example1.xls'; $sheetname='DataSheet#3'; /**DefineaReadFilterclassimplementingPHPExcel_Reader_IReadFilter*/ classMyReadFilterimplementsPHPExcel_Reader_IReadFilter { publicfunctionreadCell($column,$row,$worksheetName=''){ //Readrows1to7andcolumnsAtoEonly if($row>=1&&$row<=7){ if(in_array($column,range('A','E'))){ returntrue; } } returnfalse; } } /**CreateanInstanceofourReadFilter**/ $filterSubset=newMyReadFilter(); /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**TelltheReaderthatwewanttousetheReadFilter**/ $objReader->setReadFilter($filterSubset); /**Loadonlytherowsandcolumnsthatmatchourfilter toPHPExcel **/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader09.php for a working example of this code. This example is not particularly useful, because it can only be used in a very specific circumstance (when you only want cells in the range A1:E7 from your worksheet. A generic Read Filter would probably be more useful: /**DefineaReadFilterclassimplementingPHPExcel_Reader_IReadFilter*/ classMyReadFilterimplementsPHPExcel_Reader_IReadFilter { private$_startRow=0; private$_endRow =0; private$_columns =array(); /**Get thelistof rowsandcolumnstoread*/ publicfunction__construct($startRow,$endRow,$columns){ $this->_startRow=$startRow; $this->_endRow=$endRow; $this->_columns=$columns; } publicfunctionreadCell($column,$row,$worksheetName=''){ //Onlyreadtherowsandcolumnsthatwereconfigured if($row>=$this->_startRow&&$row<=$this->_endRow){ if(in_array($column,$this->_columns)){ returntrue; } } returnfalse; } } /**CreateanInstanceofourReadFilter,passinginthecell range **/ $filterSubset=newMyReadFilter(9,15,range('G','K')); See Examples/Reader/exampleReader10.php for a working example of this code. This can be particularly useful for conserving memory, by allowing you to read and process a large workbook in chunks: an example of this usage might be when transferring data from an Excel worksheet to a database. $inputFileType='Excel5'; $inputFileName='./sampleData/example2.xls'; /**DefineaReadFilterclassimplementingPHPExcel_Reader_IReadFilter*/ classchunkReadFilterimplementsPHPExcel_Reader_IReadFilter { private$_startRow=0; private$_endRow =0; /**Setthelistofrowsthatwewanttoread*/ publicfunctionsetRows($startRow,$chunkSize){ $this->_startRow=$startRow; $this->_endRow=$startRow+$chunkSize; } publicfunctionreadCell($column,$row,$worksheetName=''){ //Onlyreadtheheadingrow,andtheconfigured rows if(($row==1)|| ($row>=$this->_startRow&&$row<$this->_endRow)){ returntrue; } returnfalse; } } /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Definehowmanyrowswewanttoreadforeach"chunk"**/ $chunkSize=2048; /**CreateanewInstanceofourReadFilter**/ $chunkFilter=newchunkReadFilter(); /**TelltheReaderthatwewanttousetheReadFilter**/ $objReader->setReadFilter($chunkFilter); /**Looptoreadourworksheetin"chunksize"blocks**/ for($startRow=2;$startRow<=65536;$startRow+=$chunkSize){ /**TelltheReadFilterwhichrowswewantthisiteration**/ $chunkFilter->setRows($startRow,$chunkSize); /**Loadonlytherowsthatmatchourfilter**/ $objPHPExcel=$objReader->load($inputFileName); //Dosomeprocessinghere } See Examples/Reader/exampleReader12.php for a working example of this code. Using Read Filters applies to: Excel2007 YES Excel5 YES Excel2003XML YES OOCalc YES SYLK NO Gnumeric YES CSV YES Combining Multiple Files into a Single PHPExcel Object While you can limit the number of worksheets that are read from a workbook file using the setLoadSheetsOnly() method, certain readers also allow you to combine several individual sheets from different files into a single PHPExcel object, where each individual file is a single worksheet within that workbook. For each file that you read, you need to indicate which worksheet index it should be loaded into using the setSheetIndex() method of the $objReader, then use the loadIntoExisting() method rather than the load() method to actually read the file into that worksheet. $inputFileType='CSV'; $inputFileNames=array('./sampleData/example1.csv', './sampleData/example2.csv' './sampleData/example3.csv' ); /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Extractthefirstnamedfilefromthearraylist**/ $inputFileName=array_shift($inputFileNames); /**LoadtheinitialfiletothefirstworksheetinaPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); /**Settheworksheettitle(tothefilenamethatwe'veloaded)**/ $objPHPExcel->getActiveSheet() ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); /**Loopthroughalltheremainingfilesinthelist**/ foreach($inputFileNamesas$sheet=>$inputFileName){ /**IncrementtheworksheetindexpointerfortheReader**/ $objReader->setSheetIndex($sheet+1); /**LoadthecurrentfileintoanewworksheetinPHPExcel**/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /**Settheworksheettitle(tothefilenamethatwe'veloaded)**/ $objPHPExcel->getActiveSheet() ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); } See Examples/Reader/exampleReader13.php for a working example of this code. Note that using the same sheet index for multiple sheets won't append files into the same sheet, but overwrite the results of the previous load. You cannot load multiple CSV files into the same worksheet. Combining Multiple Files into a Single PHPExcel Object applies to: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK YES Gnumeric NO CSV YES Combining Read Filters with the setSheetIndex() method to split a large CSV file across multiple Worksheets An Excel5 BIFF .xls file is limited to 65536 rows in a worksheet, while the Excel2007 Microsoft Office Open XML SpreadsheetML .xlsx file is limited to 1,048,576 rows in a worksheet; but a CSV file is not limited other than by available disk space. This means that we wouldnt ordinarily be able to read all the rows from a very large CSV file that exceeded those limits, and save it as an Excel5 or Excel2007 file. However, by using Read Filters to read the CSV file in chunks (using the chunkReadFilter Class that we defined in section  REF _Ref275604563 \r \p 5.3 above), and the setSheetIndex() method of the $objReader, we can split the CSV file across several individual worksheets. $inputFileType='CSV'; $inputFileName='./sampleData/example2.csv'; echo'Loadingfile',pathinfo($inputFileName,PATHINFO_BASENAME),'usingIOFactorywithadefinedreadertypeof',$inputFileType,'
'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Definehowmanyrowswewanttoreadforeach"chunk"**/ $chunkSize=65530; /**CreateanewInstanceofourReadFilter**/ $chunkFilter=newchunkReadFilter(); /**TelltheReaderthatwewanttousetheReadFilter**/ /**andthatwewanttostoreitincontiguousrows/columns**/ $objReader->setReadFilter($chunkFilter) ->setContiguous(true); /**InstantiateanewPHPExcelobjectmanually**/ $objPHPExcel=newPHPExcel(); /**Setasheetindex**/ $sheet=0; /**Looptoreadourworksheetin"chunksize"blocks**/ /**$startRowissetto2initiallybecausewealwaysreadtheheadings in row#1**/ for($startRow=2;$startRow<=1000000;$startRow+=$chunkSize){ /**TelltheReadFilter whichrowswewanttoreadthisloop**/ $chunkFilter->setRows($startRow,$chunkSize); /**IncrementtheworksheetindexpointerfortheReader**/ $objReader->setSheetIndex($sheet); /**Loadonlytherowsthatmatchourfilterintoanewworksheet **/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /**Settheworksheettitleforthe sheet thatwe'vejustloaded)**/ /**andincrementthesheetindexaswell**/ $objPHPExcel->getActiveSheet()->setTitle('CountryData#'.(++$sheet)); } See Examples/Reader/exampleReader14.php for a working example of this code. This code will read 65,530 rows at a time from the CSV file that were loading, and store each chunk in a new worksheet. The setContiguous() method for the Reader is important here. It is applicable only when working with a Read Filter, and identifies whether or not the cells should be stored by their position within the CSV file, or their position relative to the filter. For example, if the filter returned true for cells in the range B2:C3, then with setContiguous set to false (the default) these would be loaded as B2:C3 in the PHPExcel object; but with setContiguous set to true, they would be loaded as A1:B2. Splitting a single loaded file across multiple worksheets applies to: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV YES Pipe or Tab Separated Value Files The CSV loader defaults to loading a file where comma is used as the separator, but you can modify this to load tab- or pipe-separated value files using the setDelimiter() method. $inputFileType='CSV'; $inputFileName='./sampleData/example1.tsv'; /**CreateanewReaderofthetypedefinedin$inputFileType**/ $objReader=PHPExcel_IOFactory::createReader($inputFileType); /**Set the delimiter to a TAB character**/ $objReader->setDelimiter("\t"); //$objReader->setDelimiter('|'); /**Loadthefileto aPHPExcelObject**/ $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader15.php for a working example of this code. In addition to the delimiter, you can also use the following methods to set other attributes for the data load: setEnclosure() default is " setLineEnding() default is PHP_EOL setInputEncoding() default is UTF-8 Setting CSV delimiter applies to: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV YES A Brief Word about the Advanced Value Binder When loading data from a file that contains no formatting information, such as a CSV file, then data is read either as strings or numbers (float or integer). This means that PHPExcel does not automatically recognise dates/times (such as 16-Apr-2009 or 13:30), booleans (TRUE or FALSE), percentages (75%), hyperlinks (http://www.phpexcel.net), etc as anything other than simple strings. However, you can apply additional processing that is executed against these values during the load process within a Value Binder. A Value Binder is a class that implement the PHPExcel_Cell_IValueBinder interface. It must contain a bindValue() method that accepts a PHPExcel_Cell and a value as arguments, and return a boolean true or false that indicates whether the workbook cell has been populated with the value or not. The Advanced Value Binder implements such a class: amongst other tests, it identifies a string comprising TRUE or FALSE (based on locale settings) and sets it to a boolean; or a number in scientific format (e.g. 1.234e-5) and converts it to a float; or dates and times, converting them to their Excel timestamp value before storing the value in the cell object. It also sets formatting for strings that are identified as dates, times or percentages. It could easily be extended to provide additional handling (including text or cell formatting) when it encountered a hyperlink, or HTML markup within a CSV file. So using a Value Binder allows a great deal more flexibility in the loader logic when reading unformatted text files. /**TellPHPExcelthatwewanttousetheAdvancedValueBinder**/ PHPExcel_Cell::setValueBinder(newPHPExcel_Cell_AdvancedValueBinder()); $inputFileType='CSV'; $inputFileName='./sampleData/example1.tsv'; $objReader=PHPExcel_IOFactory::createReader($inputFileType); $objReader->setDelimiter("\t"); $objPHPExcel=$objReader->load($inputFileName); See Examples/Reader/exampleReader15.php for a working example of this code. Loading using a Value Binder applies to: Excel2007 NO Excel5 NO Excel2003XML NO OOCalc NO SYLK NO Gnumeric NO CSV YES Error Handling Of course, you should always apply some error handling to your scripts as well. PHPExcel throws exceptions, so you can wrap all your code that accesses the library methods within Try/Catch blocks to trap for any problems that are encountered, and deal with them in an appropriate manner. The PHPExcel Readers throw a PHPExcel_Reader_Exception. $inputFileName='./sampleData/example-1.xls'; try{ /**Load$inputFileNametoaPHPExcelObject**/ $objPHPExcel=PHPExcel_IOFactory::load($inputFileName); }catch(PHPExcel_Reader_Exception$e){ die('Errorloadingfile:'.$e->getMessage()); } See Examples/Reader/exampleReader16.php for a working example of this code. Helper Methods You can retrieve a list of worksheet names contained in a file without loading the whole file by using the Readers listWorksheetNames() method; similarly, a listWorksheetInfo() method will retrieve the dimensions of worksheet in a file without needing to load and parse the whole file. The listWorksheetNames() method returns a simple array listing each worksheet name within the workbook: $objReader = PHPExcel_IOFactory::createReader($inputFileType); $worksheetNames = $objReader->listWorksheetNames($inputFileName); echo '

Worksheet Names

'; echo '
    '; foreach ($worksheetNames as $worksheetName) { echo '
  1. ', $worksheetName, '
  2. '; } echo '
'; See Examples/Reader/exampleReader18.php for a working example of this code. The listWorksheetInfo() method returns a nested array, with each entry listing the name and dimensions for a worksheet: $objReader = PHPExcel_IOFactory::createReader($inputFileType); $worksheetData = $objReader->listWorksheetInfo($inputFileName); echo '

Worksheet Information

'; echo '
    '; foreach ($worksheetData as $worksheet) { echo '
  1. ', $worksheet['worksheetName'], '
    '; echo 'Rows: ', $worksheet['totalRows'], ' Columns: ', $worksheet['totalColumns'], '
    '; echo 'Cell Range: A1:', $worksheet['lastColumnLetter'], $worksheet['totalRows']; echo '
  2. '; } echo '
'; See Examples/Reader/exampleReader19.php for a working example of this code.      PAGE  PAGE 3  TITLE \* MERGEFORMAT PHPExcel User Documentation  SUBJECT \* MERGEFORMAT Reading Spreadsheet Files  Author: AUTHOR \* MERGEFORMAT Mark BakerVersion: DOCPROPERTY Version \* MERGEFORMAT 1.8.0Date: SAVEDATE \@ "dd MMMM yyyy" \* MERGEFORMAT 02 March 2014  TITLE \* MERGEFORMAT PHPExcel User Documentation  SUBJECT \* MERGEFORMAT Reading Spreadsheet Files PAGE 17  TITLE \* MERGEFORMAT PHPExcel User Documentation  SUBJECT \* MERGEFORMAT Reading Spreadsheet Files 67RSVWqr   + ðxixjhW2UmHnHuhW2mHnHu*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu$jh?JhW20JUmHnHujh%U h&ch&ch&c hHh% hHhHhHh.KhnjhnUhh%"      &gd1 =  ~ : pd#  d#  d# gd&cgd&c ZgdHgdH+ , - . / 0 1 2 3 O P Q R T U m n o {kkY#jwhW2UmHnHuh?JhW20JmHnHsH u*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHuhW2mHnHujhW2UmHnHu#j}hW2UmHnHu     7 ǯǤׯuluVǯǤ*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu#jqhW2UmHnHujhW2UmHnHuhW2mHnHu/hb^hW2CJOJQJaJmHnHsH tH uh?JhW20JmHnHsH u$jh?JhW20JUmHnHu*jh?JhW20JUmHnHu7 8 9 : ; < = > ? [ \ ] ^ ` a {kkY#jehW2UmHnHuh?JhW20JmHnHsH u*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHuhW2mHnHujhW2UmHnHu#jkhW2UmHnHu         1 2 3 4 8 9 b c d ~ ǯǤׯuluVǯǤ*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu#j_hW2UmHnHujhW2UmHnHuhW2mHnHu/hb^hW2CJOJQJaJmHnHsH tH uh?JhW20JmHnHsH u$jh?JhW20JUmHnHu*jh?JhW20JUmHnHu~    {kkY#jShW2UmHnHuh?JhW20JmHnHsH u*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHuhW2mHnHujhW2UmHnHu#jYhW2UmHnHu     \ ] ^ x y z { | } ~  ǯǤׯuluVǯǤ*jh?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu#jMhW2UmHnHujhW2UmHnHuhW2mHnHu/hb^hW2CJOJQJaJmHnHsH tH uh?JhW20JmHnHsH u$jh?JhW20JUmHnHu*jh?JhW20JUmHnHu     " # C {kY#jA hW2UmHnHuh?JhW20JmHnHsH u*j h?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHuhW2mHnHujhW2UmHnHu#jG hW2UmHnHu 9:;<@AmnoǯǤׯuluVuu*j h?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu#j; hW2UmHnHujhW2UmHnHuhW2mHnHu/hb^hW2CJOJQJaJmHnHsH tH uh?JhW20JmHnHsH u$jh?JhW20JUmHnHu*j h?JhW20JUmHnHu {iS*j h?JhW20JUmHnHu#j/ hW2UmHnHu*j h?JhW20JUmHnHuhW2mHnHuh?JhW20JmHnHu/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHuhW2mHnHujhW2UmHnHu#j5 hW2UmHnHu 345789:;<=UV~uw Yײ~vk~k~k~k~k_WhcmH sH jhcUmH sH hnhnmH sH hyjDmH sH hnmH sH h&cmH sH h%jh%U/hb^hW2CJOJQJaJmHnHsH tH u$jh?JhW20JUmHnHu#j)hW2UmHnHujhW2UmHnHuhW2mHnHuh?JhW20JmHnHu:<=VvwEO&+ H"n"" $ & F&a$gd2hgd2hgdR?>^gdu^gd AgdnYZ[xyN|}DBCDɧqd\\hK{ mH sH hchc0JmH sH #jhchfUmH sH h",h.~0JmH sH h.~h.~mH sH jh.~UmH sH h.~mH sH #jhchfUmH sH hcmH sH hnhnmH sH hchn0JmH sH jhcUmH sH #jhchfUmH sH $LM`ab3 4 6 7 L M N O 7!!!!!!!––––––Ž{o{ojh2hUmH sH h2hh2hmH sH h2hmH sH hnmH sH h mH sH #jhchfUmH sH #jhchfUmH sH hnhnmH sH hchn0JmH sH jhcUmH sH #jhchfUmH sH hcmH sH (!"""4"5"H"""## # ###4#5#6#P#Q##$$$$ԿԴ܉vfJ@hq 0J,B* ph6hhq B* OJQJ^JaJfHphwq hq B* OJQJ^JaJphwhch@mH sH hcmH sH hchcmH sH hgd2h $ & F&a$gd2h$$.$/$1$b$c$p$r$$$$$$$$$$$$$$y(((*****ۧ~v~nf\RhFL{0J,B* phwhFL{0J,B* phhFL{mH sH hR?>mH sH hcmH sH hR?>hR?>mH sH hchcmH sH hldmH sH  hldhldhldh.ZB* OJQJ^JaJphwhq 0J,B* phhq B*OJQJ^JaJphhq 0J,B*phhq B* OJQJ^JaJphwhq 0J,B*phhq 0J,B* phw**,,,,---///000C222O3y3i4gd.Kgd.KgdbgdC gd.ZgdFL{3$$$d%d&d'd-DM NOPQa$gd*******++++M+N+++++++,,E,F,w,x,,,,,,,,,,,,,,,,,----믫|hC 0J,B* phhC mH sH hR?>hR?>mH sH hFL{hFL{mH sH  hldhFL{hFL{hR?>mH sH hFL{0J,B* phhFL{B*OJQJ^JaJphhFL{0J,B*phhFL{B* OJQJ^JaJphwhFL{0J,B* phwhFL{0J,B*ph,-------..6.7.U.V.x.y........ / ///)/+/7/8/F/H/I/{/|//////////////////00ۯhR?>hR?>mH sH hC hR?>mH sH  hldhC hC hR?>mH sH hC 0J,B* phhC B*OJQJ^JaJphhC 0J,B*phhC B* OJQJ^JaJphwhC 0J,B*phhC 0J,B* phw5000000011,1.1@1B1J1K1Y1[1\11111111111111222 2*2,20212?2A2B2C2W2e2f2j2222ʛh.Kh.KmH sH  hldhbhbhR?>hR?>mH sH h@0J,B*phhbB*OJQJ^JaJphhb0J,B*phhbB* OJQJ^JaJphwhb0J,B*phhb0J,B* phwhb0J,B* phhbmH sH 122N3O3x3y3h4i4k4z4|444444444445555&5'5557585w5x555555555555555555566"6#6'6K6L6խխխ홒 hldh{ h{ h{ B*OJQJ^JaJphh{ 0J,B*phh{ 0J,B*phh{ 0J,B* phwh{ 0J,B* phh{ B* OJQJ^JaJphwh.KmH sH h.Kh.KmH sH hR?>mH sH 8i4j46L6M678889B9K9v9F:G:::t<<<gd2egd@m$gd2n$xgd2ngd{ gd{ 3$$$d%d&d'd-DM NOPQa$gdgd.ZL6M6888888 9 9*9+94959J9K9L9Y9^9c9d9u9v9E:F:G::::::::::꿷vlbXbvlh 0J,B*phh 0J,B* phwh 0J,B* phh B* OJQJ^JaJphwh mH sH h h mH sH h@mh{ mH sH h@mmH sH h@mh@mmH sH h0mH sH h{ mH sH h}L%mH sH h_mH sH h_h_mH sH hR?>mH sH h{ h{ mH sH h{ hR?>mH sH ":::::;;;;;_;`;k;m;;;;;;;;;;;;;; < < <@<A<N<P<Z<\<`<a<o<r<s<t<<<<<<<<O=P=R=ǷǷǷۯh2emH sH h2eh2emH sH h2eh mH sH  hldh2eh2eh mH sH h B*OJQJ^JaJphh 0J,B*phh 0J,B* phh B* OJQJ^JaJphwh 0J,B*phh 0J,B* phw3<P=Q=R=-?.?z?{????RASAAAA B1B:B}BKDgd2e$gd2n$xgd2ngd2e3$$$d%d&d'd-DM NOPQa$gdgd{ R=a=c=k=m=n=}============>>%>'>9>;>G>H>V>Y>Z>>>>>>>>>>>> ? ?????*?,?-?.?B?P?Q?U?y?z?{?ǷǷǷ묤h2eh{ mH sH  hldh2eh2eh{ mH sH h2eh2emH sH h2eB*OJQJ^JaJphh2e0J,B*phh2eB* OJQJ^JaJphwh2e0J,B*phh2e0J,B* phwh2e0J,B* ph8{???????????@@@[@\@g@i@{@}@@@@@@@@@@@@@ A!A.A0A:Agdgd03$$$d%d&d'd-DM NOPQa$gdgd{ kEoEqEEEEEEEEEEEEEEEEEEEEEEEFF F FFFFFF2F6F8F9FGFHFRFSFbFgFiFjFpFqFsFuFFFFFFFFGGGG0G2G>G?GMGPGQGjGǷǷǷh0B*OJQJ^JaJphh00J,B*phh0B* OJQJ^JaJphwh00J,B*phh00J,B* phwh00J,B* phDjGGGGGGGGGGGGGHHHHHH H"H&H'H5H8H9H:HNH\H]HaHHHH-IbIcIeIIIǷǷwghB*OJQJ^JaJphh0J,B*phh2emH sH hmH sH h>mH sH h0h0mH sH  hldh0h0h0mH sH h0B* OJQJ^JaJphwh00J,B* phwh00J,B* phh0B*OJQJ^JaJphh00J,B*phh]h0J,B*ph'IIIIIIIIIJ J J JJJ#J%J'J(J*J+J7JAJBJMJOJSJXJ_JgJhJJJJJJJJJJJJJJJJJJJJJJJJJK KKKKK K"KhB*OJQJ^JaJphh]h0J,B*phh0J,B*phh}L%0J,B* phhB* OJQJ^JaJphwhB* OJQJ^JaJphh0J,B* phh0J,B* phw>"K,K.K6K8K9K?KAKUK]K^KeKgKkKmK|K~KKKKKKKKKKKKKKKKKKKKKLL LL!L"L)L*L/L1L9L>L?LVLZL\L]LkLlLvLwLLLLLLLLLLLLǽǭǽhB*OJQJ^JaJphh]h0J,B*phh0J,B*phh0J,B*phhB* OJQJ^JaJphwh0J,B* phwh0J,B* phDLLLLLLMMMM M MMMMMMMMM1M>M?MDMhMiMjMMMMMBNCNENTNVNǽǽǵyqg]hH1>0J,B* phwhH1>0J,B* phhH1>mH sH h2emH sH h mH sH hH1>hH1>mH sH hh2emH sH  hldhhh0hmH sH hmH sH h0J,B*phh0J,B* phwh0J,B* phhB*OJQJ^JaJphh0J,B*phh]h0J,B*ph#VN^N`NaNpNrNNNNNNNNOOO O!O-O8O:O;O=O>OJOSOUOWOXOZO\O`OOOOOOOOOOOOOOOOOOOOOOP P PPP"P$P%P+P-PǷѧѝǷh}L%0J,B* phhH1>B* OJQJ^JaJphhH1>B*OJQJ^JaJphhH1>0J,B*phhH1>0J,B* phhH1>B* OJQJ^JaJphwhH1>0J,B* phwhH1>0J,B*ph>-PAPIPJPQPSPWPYPhPjPlPpPqPyPPPPPPPPPPPPPPPPPPPPQQ QQQ#Q'Q)Q*Q4Q5QDQIQKQLQRQSQUQXQQQQQQQQQQQQR Rǽǭǭǭh]h0J,B* phwhH1>B*OJQJ^JaJphh]h0J,B*phhH1>0J,B*phhH1>B* OJQJ^JaJphwhH1>0J,B*phhH1>0J,B* phhH1>0J,B* phw@ R+R-R1R3R4RgRhRuR{RRRRRRRRRRRRR6S7STHTJTNTOT]T`TaTeTTTTTTT۹hH1>hH1>mH sH hH1>B*OJQJ^JaJphhH1>0J,B*phhH1>B* OJQJ^JaJphwhH1>0J,B* phwhH1>0J,B* phFTTTTTTTTTTUUUU.U/U8U9UPUQURUUUmH sH h}L%mH sH hy`hy`mH sH hy`mH sH hH1>hH1>mH sH hH1> hldhH1>%T"UGUQUUWWWXMXX#YtZZ\\)]*]]];^$xgd2ngdX33$$$d%d&d'd-DM NOPQa$gdgd{ gd/$gd2nX1XMXeXXXXXXXXYYYYY!Y#Y^Y_YnYpY{Y|YYYYYYYYYYYY Z ZZTZUZaZcZqZZZZZZZZZZZZZZ[[[[)[-[.[2[q[r[v[[[[[[[ѷhcU0J,B* phhcUB*OJQJ^JaJphhcU0J,B*phhcUB* OJQJ^JaJphwhcU0J,B*phhcU0J,B* phwH[[[[[[[[[[\\\\\!\"\&\l\m\q\}\\\\\\\\\\\\\\\\\\\]](])]*]]]]/^0^H^۹hSmH sH hmH sH hShSmH sH hX3h/mH sH h  hldhX3hX3hcUmH sH hcUB*OJQJ^JaJphhcU0J,B*phhcUB* OJQJ^JaJphwhcU0J,B* phwhcU0J,B* ph2H^I^T^U^q^r^|^}^^^^_W_~___```aa6a7a@aAaBaLataaaaaaaaaaaaabbbbb b.b/b@bǿdzdzdz垔zzh2 B* OJQJ^JaJphwh2 0J,B*phh2 0J,B* phwh2 0J,B* phh/hBmH sH jh2 UmH sH hH=mH sH h2 mH sH hBhBmH sH hB hBhBhBmH sH hShSmH sH h}L%mH sH 0;^f^^^_aaaJdrde@hhhi ijjjjCk$xgd2ngd 2$$d%d&d'd-DM NOPQa$gd| gdBgdB$gd2n@bBbsbtbbbbbbbbbbbbcccccUcVcaccchcjckccccccccccddIdJdTdVdcdddpdqd~dddddddddddddeeǷǷǷǭǷǷǷhwD0J,B* phwhwD0J,B* phhwD0J,B*phh2 B*OJQJ^JaJphh2 0J,B*phh2 B* OJQJ^JaJphwh2 0J,B* phh2 0J,B*phh2 0J,B* phw<eeeeeeQeReeeeeeeeeeeeeeeeeeAfBfFfRfTf[f\fefffpfsfufyffffffffffff-g.g2ggNgOg]g^gjgmgngrgggggghhhhhhh2 B*OJQJ^JaJphh2 0J,B*phh2 B* OJQJ^JaJphwh2 0J,B* phwh2 0J,B* phHh-h1h7h;hh?h@hThahchghhhhijjjjjkkkkkqlsltlllžžžɶɘzrzh^ThC0J,B* phwhC0J,B* phh\n0J,B*phhmH sH h\nh\nmH sH h\nmH sH  hCh2 h2 hBhU[mH sH hU[hU[mH sH hU[mH sH h2 mH sH  hldh h hBmH sH h2 B* OJQJ^JaJphwh2 0J,B* phh2 0J,B* phwh2 0J,B*phCknkkkkrlsltlmmnndnennno=o>o`o$xgd2ngd ggd2\3$$$d%d&d'd-DM NOPQa$gdgd\ngdB$gd2nlllllllllm mm m"m.m/m=m@mAmpmqm{m}mmmmmmmmmmmmmmmmnnnnnnn,n9n;n?ncndnenǷۭǷے hCh\n hldh2\h2\h\n0J,B* phwhdhd0J,B*phhd0J,B*phhCB*OJQJ^JaJphhC0J,B*phhC0J,B* phhCB* OJQJ^JaJphwhC0J,B* phwhC0J,B*ph3enomonoyozooooooooooppppppppppppqqq qqqqq-q.qEqFqssssssssssssss^t`tuuuuEvFvSvUvcvivvͽh2\0J,B* phwh2\0J,B* phh2\B*OJQJ^JaJphh2\0J,B*ph hCh8hh& h\n h8h8h8h}L% hCh\nh gB`oooooquuuunwowwwwx3x=xLxlyygdwgd2\2$$d%d&d'd-DM NOPQa$gd}gd\ngd8gd8$gd2nvvvvvvvvvvvvvvvvv w wwww&w(w4w5w9wzLzNzOzWzhzszvzwzzzzzzzzzzzzzzzzzz|{{{{,|>|||ѷ뭷멥hk{ hANhANhAN hChw hldhfhfhwhl0J,B* phhi0J,B* phhiB*OJQJ^JaJphhi0J,B*phhiB* OJQJ^JaJphwhi0J,B* phwhi0J,B*ph0|||||||||||}}}}}}3}4}5}:}@}A}B}K}U}Y}[}]}h}l}o}v}|}}}}}}}}}}}}}}}}}}}}}}}η堜 hANhANhAN hldhk{hk{hk{0J,B* phhk{hk{0J,B*phhK0J,B* phPhKhK0J,B*phhKhK0J,B* phPh$50J,B* phhk{hk{0J,B* phPhk{hk{0J,B* ph6}5}B}p}}}}}}}}n~o~p~~~2$$d%d&d'd-DM NOPQa$gd&Ugd&Ugd\ngdANgdk{2$$d%d&d'd-DM NOPQa$gdk{}m~n~p~{~|~~~~~~~~~~~~~~~~"#$-7;<>ILMNSYZfuv뺭ތrrhE=hE=0J,B*phhE=hE=0J,B* phPhk{h&U0J,B*phh&U0J,B* phPhE=0J,B*phhKh&U0J,B*phhKh&U0J,B* phPhE=hE=0J,B* phh&U0J,B* phhk{h&U0J,B* phPhk{h&U0J,B* phh\nh&U,~~$M7FHVWgd\ngd&Ugd&U2$$d%d&d'd-DM NOPQa$gdE=2$$d%d&d'd-DM NOPQa$gd&Uvwx )4568<=DEFGHLMTUVkh&Uh&U0J,B* phhk{h&U0J,B*phhk{h&U0J,B* phhE=h&U0J,B* phhk{h&U0J,B* phPhE=0J,B* phhE=hE=0J,B*phhE=hE=0J,B* phhE=hE=0J,B* phP5kxyz~€Àɀʀˀ̀̀΀!";<>@BJKdeopr{ȾȾȥȥȥȥȥȠȥȎh g5mH sH h gmHnHu h g5jh gUh&c0JmHnHu h g0Jjh g0JUh gjh gUmHnHuh|Jh:Bjh:BU hCh&UhE=h&U hldh&U5€̀=>ABJq  $Ifh]h&`#$qr{>Skd$$IfF0#X t644 la $IfgdF  $IfSkd$$IfF0#X t644 la{|߁ '(+,FG`abcdjkmnopÂĂ݂ނ߂ hCh&Uh:Bh&cjh&cUh|J0JmHnHu h&c0Jjh&c0JUh} h&ch&cjh&ch&cUh gh|JmHnHsH uh g5mH sH h|JmH sH h gmH sH jh gUmH sH 0bco߂|wgd\nh]h&`#$h]hgd&c SkdF$$IfF0#X t644 la $IfgdK 9 01h/R :p.K. A!"#$n% 9 01h/R :p.K. A!"#$n% C0P1h/R :p&c. A!"#$n% Dpn*s807>,#jPNG  IHDR/QsRGB pHYsqrIDATx^i%uxkۗ~ 4K @DQ4#kRXy,ÞD&b41+dQtxe$jHDA @K{ݭ9YYY}!JnCݺY̪wα',G_k$WkҜ5v+EЯrAsꯒ8aٱeǃAouu5zJeX O\A0tt鹺6Du9Uš3G397 hFa[i sSS35+]׎*{hYN6uE+ 4QY d% F׶εˑToG(|wfmt+ xN칯,.j\G$:?8n"+׮80BVй]!ңAn;tXAfJFUh!"d8GxQʮU#3fV8΍20v11Sz`$紶:\tG^q d 5Rz&\[r+DzzqĹ(w˯m!AFr~)ʨ˭xr.pni=y,>ex2%.WDQ8ءV ]l&2J[<8H# ܔғ~4 s#M=VkD!PX4͉{|名#dl< $u.]_:^xxVIXIF$_:O*AZ V&/ttAYpx.HJA3Ss9RG@A8*&_ސ6Mp$$>-\bUb^:V.KaؼRmY;Cjőɱ6くoky k,Ddl^z$',Be@(:%!(`We0 `&ptKP̐z,~8Z>F;^ 2€rna3F68%=2\M)Y=rH{|Bm$w@yݲ.ɖ;"NccOc \6\76VIi6CʗhOof%:߷R_zO/_A5)G@[|!NP5(M38H# X7Ü>- A.Ɗgyn\ A[JgJo@u 7nmmm 2&S!T̟UZ[^:'!JP|M[ 8,0[vQmCh \] ()=r*'b6+.=p4/3=uI 0SV/ND ^<"> W*۵q;HԵg#SJ貲| L1Kq% 2׵KΟmP  7Le^:C3Nrs2cLZukF]r4lRP[u{fP%j6Z# Dq #nm~TM&_՞,C&U*7[~Տ,=Fei/#/hRt;fcYdj<䮻QzJZiœϜ+NlǕ^QNP)TH+Ԋ.JD./Ryt0_![+;wבFI ?xK,w[ t[[J~=?[{cfpC\ZsN]}ެX[ -q(R/K0RJH];4 5Vs*rI9z i5D!X#(3WD1"CJOA|SS]S㻠`2US )E kN[ R;"pdzTڹkn#5A؃;=`-Giz}ͩ]heybj!u\Q(fmZ@: hόՄ>v@Ӓz+l`_ި֛ كR+>A])j%1aOTYe蟻 kD~RB?ՙ7c-OEزPR%,4aDZᗾDQJy\n$̍T.sCtT("F5+#mOkT8}-}}Tf 5)bn8`hFIK HKJZȩfsbe73vt0*OEW&>V<aJ.(kIsLaV]Q۫7՜l+f7+~ԋ8co3'rhfM !i2AllEM̌kNr K|[_7rSȳ~} 2:TzIetښd/-:鵳A4h4zrpܣKq[ 0(9Hn4+& CX Oo^7Oͦ} ph/|&c #Msņ.Ӭ@n4_u_ѷ9`D+υ0DcK"* Gpҏc;nIܬ6R:2LҮ/2q"$:$D U B2 ]?ivnm)@LLڼ+$!~py%'=%YYq*g" k^M..&L& -Wq3a+-e$a@ʽБ޶ey$0HoY/}T[1L^hR]ڽ/e{ DӉ hvlQQq^mY.iooDqp(`d5.VM Mvjf×Z3i5gB,aދe"Eoh4mpjcV}rfr^ -Эԟf(HFRYm:?n B5m`,(cԃ zuespubAڵɱzW$@AvozRQE#+TS^v (4 ZQƯE}J̞ rtːjp5xتLW|qJZYL (Կh)^п0]p֥ņI6B` ( !#4F]ϱѢfEFy@Rs 6AhvAz$fHb*ʕg{\}ME#+2ٖ\=RʎdRJjeLxV1:fΨHAH`$+'uڟvxyLi`)n#bB0i  dMƵu:U zT0+J@=δZ2diYî=RG25GT-Oh(Pa 8̩i~-iLQ-jHh.C<@" )~)\M5- кؓ>ILi|T6#TpCPOVm]u*n o*VPݿtϴpRBHF.Eg i`-?C_P/qGWٌh(0xjssk;@ϖ]+ hd*$CagHlHZT b?4ΠړcB3ϵ*0Mz!V}x`#WHYhL*n ~XȠFqC4Ѵ:4ՇQ1%Fsp/; q2T+gX 0z[v=;L?h]O>4(]@VexY.$4դ]_ywA:xpQ(.T 1ɡ7ٸnTI>ydF*W/i(7ZDR((DO.%PP>C2bɲ$ !@)c]a3:/U":\gZy>z,~S(H# $'y ʮ٥fm̛x':W䂢FF´jE O |xo0Rc/Ks',@aŕҋ y][&u&$48w$n%\׿rD:) Y\1a$!/r%T/tqԳ+>Lu䈟9]ӿzUF,S VYW$ЩipTY eDvB,9V?^_[*4 /ϭ`5]i"a@sO Ci\ Pp$甐a gċ\L̈́rI͚ dPDr̶DԦDΉ2X:OՖM!c j@p* Ia{] -jKYU2t?`2jR#t%!oN13g  x|2#qђLU@:Fu!H-J<S׼h9yqnѩґ0ܨqWn4u:/I-p$(*M^K!;kVzG2:HoU-f L&v[\ED`\f]:W4x~"+b diJ8ANFP ȵyѤCn6v-1pBHnXw RɄ20]PZӑztJ+B2;cDdB\;6(DXցo'2т'VB5Mq 'A6\U#mBRUm&ZO--GÊ3kDVZ$R1aw.ݚ1:I`$wPS CnK 0澯TtI hKH-whhI 9YVPQ?Yg[` t#yޓɇPA?hD`rx9 X&]J er3HxuYYϯ RMafCA*N.'T=_؝H3k(Ql#%(r:_+>79t+ fϦme<:=Nfd d*< jg:W1SEd\ݭٮD0C"Y>Yf-QxUnK48HoY΃?rPO`h Ag:ќ]&J(sLPЖN5/TKWM rXi F-ft1LT&z JLyFHۮ δI- Sc9.FofQe/;阤AZd_UPb2ՉZ,NWDEtH 'pz+h(#gg=M2䙦lAP5I(Ih6g5э:̬zvpq ii#'O =($hDㄕFo 5`K,He# d0T9fJRO7|Fµi(!-AHFhtM ytVCl#=݊#Q+C(WW )3wR1{V (qY$da{CfXPp\_̍!ʖ(z*ֹEb26r@sj~ԉIALՀ=q/2 sjiH/0r¸ O^P&^D!Bp=YaYdjQ~ik5GGydk٬l+ɴ[&-֬t/Q,1i.+#Ѻ[-V^hZMΫ36)LۣRFI(G.N Ŋ[B>p`VA3lHFBr]mBDP\{deD֫]BCTWYݰ;91"U "߷Zb#aM>^z߱G<07t) N jsY:[\|ޓ.MԥfdB?"" h;?x fu{Aț4{.Yx5vMwRd!c/UAB <˹TCٟY*Mn}][a(D@n\vL.p dE[ E0;K ωKZivPeJ/An L0;NQE?!gq ayy :] /A] Mp}kN}}m(`cS2Lqm a(S `G쒏WlIm K5Z0Q'#axvipy+EtA>$ټV+lf[,>F;p+K%&JuےA[^`4-}-.$0w_-6Qܠ&P|JA-Ŋ( д6jKr]G-Oܹ}G= S{[QX|Ҍ}]bu!m4Z[bEUzY}f-J 9/ݽ wV`iAia35B\'9u2^8$7`̯f}(\XonmU7*anK_ # $ݗ?c4QqxFHt926A _|QP^3n_~2fPl{_gZtYv 6a]%Vۼz1ޖ*EI9x`=X3h .H/E~A?_]^%7/|b[YDC16dN^#XHږ #D>tDg?g D@Sժq϶۾]+W^|˧.>6{o l[{$+gS' `b&qbR\`je'VA=%B35*>8!bQQ}ZH_![`eA!@H] K'{Am>5[Qm߮[gzm27[#6' 3$EtZe8(שCK9 ;{s}ԕ{5N#ɡ\p9 tQ5oB.$]\ AR/dƳ і\E%k/Iϥ |{ sMQ&z[!rGn+Pd9Hg^ɭ4~UrxyXoMJ>SZq. 2Tq9OX~UUI4T.Zs(4a닺R'Ph)ƿ#LEQdC0=eؐxÞt!tgF/# $0ەBR@bRVU!~$C1&1t '?~聻8 ǥDִbHf`8\ ,o;(+XMϊ r35VtP%(`j`",.T'XFȨ(Pb7 h)k*JaHZY.te)_+ =5 +lf^U:ANFuן=z~,!FՆ:<$d< +bݫZE0%`]ۣ-Z'\2SÂ, rV YMATM's?|=IV߇>{uUhgL~/j=!W]?1Ap;@ 2nRRRR5Ԑ_5O8RC~CwOLMNwn( Lün|c3wnQ!K L!lѲ ܡ$b4e;uq>+f=wDFJm'н)_;4F5OSR \"|Ş|J=f@2ƽ3wf M0ɛy{{I`$n^P&/L՜)ɋAE}F[ݿc|lxܩT:_W_z˾Qqp=m^XTm;lx33S}FZNzmF:PS9:f$˪Y!JܩD]x_B"x }6PtVҡp;Yl&yr;.Xge%".S=aW0G(7~Ml%9/`E/ "RSβatIڡ#Mǵ^Zf8{̰{kcS5/Yt"-lȪ 'KxWe TH$Xل4=nK$ @w){,ePHA}7|$LHPy*P5+ (VARIJ&88F&FufEbOiQ"+y4zT8*VlAuK6 ԳցTG`Xwd7l4"4ZaحsY}ɧDP;U|Ko)ww2FI`$D=@grljzl|K_lLn:8fpGЍw. }+nx˟/g^N~囯~_yye\?U"R $ԱaNS\S$ SS!@>:[] vTEu ndҜk50|[փG>4њY?ĜZ}x#f u"$G=,5k* S3yƕ?<{˯œO_}>0&ƛ[ _ 20siB ^Z*MB5b7wYԦ58E+_5ev:[;CH]ͱ* #tXMk(S.: 6% @$ˇSsĦ CZ]"BbX&Ώf2'S9` c3gᗒU Y3N8XXj'a2;֓&a5=l.!Ug.c@5^2b,Βa2+[٘E@za7= Ң?a͓@ #4kl(oesbb7:=] ϲP$*B[&(%{8K1s BV겛L6r%WYb OZH^et|b>S*/\QQ؎r)3l˔,8̈^J6b&䞠בFx$@ݕS}4f'.ȱ-Z$mP-ivn?V{>k HpD^ԓ>/_L v;ΆX_ O~j;< O%`~HvfC'31lP@3S 8mJ`E.R)xSbkVd vT@t1N S8R%$hi0^Pq!QT髯Y;go8~¯?Jߩ}wnw;as.9;4S˅om؍l׍OMZ(?P-̽(>2>Vhf %Whbٍ58X,-зļn|ѪVЪ Jǟ⤄'ZJjyIu)ԷKjD N7j- F3Oz0! -=92eUkА@[#TVZC:y#e4ɏ7agATt)"J/}aK{G`SJ0 \)ElV2z9!C9o" 8|GZ5d!1luq2`Wch=PE <;>Jo7l(H# $W*rFYĴȔxI/ɯ>18;>'^#g<;׍0C#:)a;p`_&o]}:{,תOOSL^$W mWkc/ݷwP#V&+5^ل =J?5|]kCW p IkxUsO[k8l)Uulr0.኉vL-;wuXF7vr$F*c[w0cɹERg%GUd D%.̝G곏wcZ>zU(*Cثk/uL7-3[ioC?CyȾwqKw՝kt#NԏG=w={J悎}xtco131ռy3t(t7n@èZP{wv@I^qBb4 %q9ad "5' є?$Ne1G_Z=+V/SކEh&7䓉oߪroj"7b!/-偋3{dNǽ#uc=VNqdM20IIw눻%I*bWF9~Bפ}vv촏uO`ÐRxgfZq8%ѿp)8ϑУZgGkubA+[LGIߩ=tٮ9E>:H# = {MOMq[\Wٶ#W!X x+T__KVj0q+dL^U+l4p`4vX[:|7pj7Vk9gϞNoCsTG~Ztn4fm횜=| =l@w,,TaOGǭFmJk6o)q;F < ?zk!ݢ~Ly8\퓗;wxQA17wٓ ۼ֑=?tf}N ío;|^jVN=۷ós+k޼r`ѽť7?qm};ݭtP PW `=ZեCYt_@,qy4ǒ[SҵѨ%"@ ف)3"1I"#-X\ruDo@_6R)#o*LIbP PA-OMʨ3D 1yRZ[ŁrXc ]SDge-^bY~![iK|oR<83k9&K.ӷKq>Ĕ0ڨFdQH `!M%~1:SV*H<ЍۂUuCF*Qxg:Pӽ7n*Wh2(1dAev_V/'c90H# ܜo#Yw̝3zoQkam%\Yqkx-wκ+IZ.o]?FF=&N!2\`n\gM`|_Mb9V_uU6{ t^=x-~:篯<ڧ* ̺*R-K85p`c~/hd5GNv=kY=ۂ}y1#>qքcd qaU`UO-;&&m*c>bXf)* ʓyqHq_[7٘dʇ>1ϖshҕ9XfeƵ9+(`0Ԃ .t1G@ը_lI F &l,!Fb'S;Ҟ=SJG]j C[ymfIjZR2VkZL_瀅irH[@RΩt! vʙ5u3*IhIRdXJiI~Sb. ]Òh^6"t8S0EN~0{("IYps{A[ xeLݤ;e !t#T_ف/_3hd=ˤc$FnJyGR8>| f@4KP]'R2Kʺ{?O|L#fM;L~x p?_m>hHCsK_8+(|!]_[r,%p J,lӜږ;w?naߩ\CS;_?|]v`cp/YkqwVa}x{l6C # g4?s #%Bȯ>#DT)puA7Z#vOV;x ϐ7_ӫoZkݵfeQޖ!w+xO1K8l2!QZ *[8Bx]P8B,[Ng^I5D]$n/%> ϺAlLVfg<遧+H9F.MC!m<&+).9c yK(rzg9W+%FVZrK,Lui"btR1,^UR ð*s^1 (]<,ɍ"F4=1,vQ_i0{SG%|;GI`$hXgzr:)O;;#f%xd{N> Zc:LB{4.H{~;;cc?>]Xt[/r9CV=s`-8a!y~ryy=~-/+ߪ  KfM P?u|wc jQw|;J=qvs6}~I$YhZV@⟻k ٟF) L)3@RiӜ_o Tu8 Qe׮E:O@IhUEMyr6kRԏ֦K\ @MR*C1G*>}$7z0)$!Jt/7HnwimGu3ٚ07κaC{ROA=D^(߉{iYhZJj%#ؽ>1sn뜅4sg톂%I`$$@daސ8Y䢼E+y@#V @N44Hw}Aoyr}w>??ÏN;ƭy+9ʛ+}r!8[*1H@o%-+n]SjNˮsŃV2قG0߹~U )f!:u~Y}ؖwzÏퟹ۱; D7 n5(QsjIO(׉sFEnx)4 "8D\qX8I$x'87k-k-vA"yfe@beq7zhm Y[;n؏:]숛dq4M[.}đVo=e'vk$]0̪K;DGf؝9K`ktorĎ$05`B%zlW\5-"Pkus0iqΡ>|ծY}yy]w)B*t]e6;anl.\{skp1 ``aWc+xl!BXcncڛ\X}'~_>OZ),s)D(o#C~H(̩0K0/kV?VbSd7׶[B@a7;dcw%b߭E{G~oO??j4N ]٭W^Z{S0?Fl٫@':x5`ZD 1|؁h_۹xLF00rƒ7PR(_e0|ƾlMԨay{ ()K1(h5*N&B6Z͘y*9^)[l*sqcbkgVI5]"9S7$POR/:?GðNJ}}3>-91&KAai7XfxE (q3&bwC|a7;K?a,iLY˰88oFiFI`$ $@lm_Y[v3;7U(:Zax_Y:ج~<+TNMMx2uvg0ɯyUklG.LcUiZ ɚmEqFTPJŽ )r. 7`rr5hk<4F³]]{Mx.r.-rҶ6@$8v՗}+/wW/`~p ډ8x:G*;Op$t^8ƒkb@w0zi; 9fsb!/ q;x\aTOo>y, *)L@f` 3xߓϋdߏw Ȯtw9}hاmmC6+לsI}q%ZA9?ʶ7>WΨh͡v7יmlTq6R%_U!rRnq]iNS^ƪ両r0`nI3 ia7iؙ9fVfXJՉBx%bkP l@ L4s<-zHW9ρWi62߆`G$0HHv̡u}siCħg2SIGvߘ4֯ {l3kյr"V )TY~jS*悅uX8{Ixe ׂpdfWs3-6mqfEϝ>o}=O7㷾`?tgWO_ן+^ZamUQ }*S/n " -yˇ`S}TO~CGg?]E脗^vkXQ>@rF^m{tkz7V@aͪ :s}wz/V* [/Ww>u83^luzƚCsw;[VoxMOcCL v寽77^~k/\xڙsWXY=s3z `QwL駠#$*gDek~l 7-~1pk Ԯcگ? ~WNOx㧞zܳ8xX `~?O*;pW- ֳ/~=v(އy]} 0v dY7={mUjx S~GVWc2pzl~̡f7\#W]d]V! !{ ]ynLq0s;vsrzޚgͥ&'Z] 鱩VXR}ˇScdslb|b䁹[Ƽh>¡R@6Al/<ԶhEdh$4iڪ~`@':Qd`3 TBVvnxR#r~NςZ`zDL۵~gh>ڭgV8w5F-%/f(&7@A\7]BQG36aQ;PϑXߧlh%c.-D)t:&e / :eؑ楠"BBBœ5 b_W7y$% eZCshf: _b oS |H9bvPQmYklTzJc&i1a#Ky^X!aVHuɛAs~J+,d'J)^fn2TQFIB.$b0^[.ʹ9!FP 9v \B(N׏5*}CCpPU\Ysv̛kœy(+߸2['q@Ո/E+_ 7/A:ȸ&:AV 䡻?*elWw,*w6'V;=~VXȅA;:Uhzf}ܾw%>q?،h WdCD`Ǧb+.hh" A 'd'Vz>Lط?ִg[z25IWkop+amn NW~'Xy>u=w~tqb ~7ds)EA*8[UJRS.' 8OcȮ*Fa}c |H Me ]W W_A'Q=%[]T'BdI,M#kiГCo+E-9d_Љ)bw59dF\7C4Lbr]j8w&YVu-FQ:ܛX,~>R84=i7:1CxKெ1Mg$0e$F^Z(*؆ T8>6G⇭` (e02tګknw&^ynӭ]3ݻ&8>;/)܍W/zTs A:oa/'_ُ~pg9nv<;Hfw㵳+0868\{:"[ w?xUb"`ٿo)-xX60?X`O}#dZ/zzm2( 'w[fg~4њxFn/64}: ꮱxooI`\ :fg: @VSiPC<3@wVg)ډpNB{;R! O'Ƒ_̑fv0=P|dGWFIHyƉ5xd*V:n6[̥x{# Ml}{Ӎ^z~yҸ;.u5vp]}ݵ!D=tϞ[\w_O XҪƱm{:pCyC wb=|b{E3pclofv>7t#wţzYko]zNo/WfPl4 ]]-=pG'jg^ֽΆ v.螽W_zhhI= }p1!]%#h;v+/ 8V~x܉c?O[{oב&ƾT?ƠF8?o]Y2xkr{{p¬Uzf }BDVtVN<4mZK0 {"ʠ*DfQ/(QXV -K88w 4@ *?-+osP2E?e@0ӉuSI, 2ށ "1Ub)CQE0,*̙*Ŋ'Ķ,.O{7ztdI5ЀW|t{xc JJq{&Kz)B" $(9Y) @g$pAaB6 :m1TwP0^"݌M`>zia+tv'^=oNNW:l[Gt^8֮on^oCnӝ$D҉ۯ]|WZuɱ-9+ׯn[XN|P˫Wg[ m췞\\| _:rˮp`O>we -P~wk!Q453p`[̷W n?Ljk~螟m^p/~? -Sn}A~ۭw#dK3(+;OfDպR9 mb aa 076}U`^g_?lPC !ت ΎyO?~?ߨ9bbMˍW^? V=\~?/v:jMLϝV~<3j2{x5mt7'g"wm^~WN74K7μvflrva>kK{썕o&in ӴwAݿzԥ91Aڑ&) _4uϝ޷t;m'으XpU ;:2 m'dQ霺—竍?\Z/<]̧N4-6^gayo[8M߀` ;U567E1.|}JjV:h!F-/Ph %./ogR_ܸx #gLJ'ăXDiJ5* ^nf܀qF K l8&'N- +'_((tr]->w@efXW7!|"7 r%3ͤ_=E~< 8fQk7}֥ }R\oӨ͍67YuWA &2p^ AQ!wvOJ ,  jǚnuxFTfDZ#-wہۑt1 ߈ .B$fp(Lc|$?s4gt&Pϒ ցn1$F-S'_kWAK/ŸoL0r \)5.wGY$B 7,?#C"Dh81ѪBB3n+f)nHI  BJ .Y: R,xɑ1N"R o<2%U"d {SS<ǪCSL U,RIp BJ࠘ү&,6g՜=eb*Jb_BsrV5\\;ȼ2w}KQF*>xɏPŹ幩Ea[ epe*Ed QP/ "`Znd鵍+sAF!>%+C߷x[ MZ&iRΉUsNuD3_W;LfVAq ^d5a `A\_)́d #,o#!}4VIF!fXǰsdv?>qD mbtTFkߜFs\HlM _=,צD I\ f 0@v J(Lj$BƪD--zGy䆐䯏)V+a cI*%a:k#1%z9p;a#D B+ UM8K8$,b֬ىQ~5zd!IMK'-JuU?#uJB_9QEV]R&ʊfo|sFI{JlUV8֡VAI;JB;o  LwΈi0 ~ig6&bǫJTw]U k@ 4 鹺'ήH8)o/}Mf TyV{b>q}eN%sp*rTT}a1`%{OM̰VL\tB3"|+=61@!D-q@;n A¥0͓>㭪 G+t$~C\Ԕ'OzWyղ0:.rc.'siӖU޼Q 9㧬Չy<\;v6LhYLf]u;C;q oB>4z:G tZVzC>IՅr#t]G+VD8̇4Zj9ss%kfnܕ\/AMjrt`V؛r.iL34+ÿ-_X# $NK݂Hר26>!jŤl 8p1ϰv<#rn/*˶7F UC( f[WV/w886SbSPܲK慞nɇVv:+}˪$0‹H0#o h(-з r e $)q&q>:nrrHDQ4W7M`ȴCƫ1:@ˁc_9w*3y [0 +-8NK U+P|e6*|A>WNur#0׊ү%8UrC(oaA^*F594?BI,rL0T$ޘDHS `+IA+zG)gLܢ_V-&J rtk4oL/L{|$cF >|kT]K)`s==Bo]6J:HoKpMeh`Ǚ 3Qfg2WiLC~rYL_ⰑRі4G᝶:[W]]Sp$~m8ݠf%ٚ8!͋L&zy/4Dy(vjy:on nP}ݡ!ȹ+uK*; 6^0>6a5d=4ܻ*CmxЖ/P]ZFcrB~2B) 65A[ o"rAy}pV S)Te'.WiP'}#r@+/(n) 3+<8@} Iqn0Ejt'nRlq8?3xPҕLMUe}Ɣa@} 7r ^u0JF1 ,Qfj t+}-RQf-PlMQ 4|uRB3jfhqcM;H(Wk ̔T⢠僡uJ9zox37?)t.V ߅#EUs3._/Jǡ( u蜕 ĹAON5lH#eV*\رR\"tJVO/ fZJO.yHZe3R2Tgg> E!լ4䮔r;: w$` 2T)^ h|}})nfũEd~etRC*i2c'Ҭsr>B76I`$ a&JŸ(bq'Ʀ`H ʎ+v d>*1RkilUu *  n]]7+2IlDbgͅ%X$ F9I(pr&'_#v;MYjXr(UV;[gƔvGt:@ ª-e҈VB ]0ukh`Y>!K2Q2]ܠ=kuյ8zL۷)t+E HzD` w4@QlGǰtGt!9oEJЭ /M<#EQ&>Hˮ/8~D\7N(\s}&!Ԏ<(5Q BZD M *‚SZp̪I"/+h0)IrViCs|)hQR&@˻Iim3V"cYV :1 Ft0iݚvt>H$0DwKMʶ`L^4eiM٧܃l(i +lL`-Spp0$\Xp1O䀕!75>=ٚZHYR4)#֪ݰ7}|qD.'ȫ™@l L >7ߐEKC5U\<[MN!&h.Y wRE-X [϶&c⇽Nˆ ZЭD#ӳ;uI .L4 N=,  !&0~!J\yvФǒA4]8@QŪ~d$510ZyJubkTR RhEtrZTMQu ǡje)7Tlkt4ft w#`h !ѡ$QMޓ74~dI sǡ?W辑F*rcK1+ b&>oU\w 4P**4-'~"oIp˩>!̄) 0kllFNWÔȅ 9<E4_Ԝ&"7(Lj=FܬL̩m$#07_R6e澾\3n$I@`Zp@Zs@H` p\ e t$cd:'d4H^@Zct {GdW$1+(dMdqj@aĎfpE31GEq5 s3l>ΉW*$]q@ R(6qEY;Dfu$yM>X?;IJ; .;wI`$k(w@ z=s yz3}k /8|hk'<{ ?{""%nT]^_sm -injZћQ<_[/8W4Ѓb :{Nե 0 Yr-dfAUfYG{wN-hA1 # KӓsS5P- [rQ(mxןrA:ƑoCrԺsH]EN;@B/ԋ'x֩'ˆhVߥ\3i~)L6UČK>!R'ȟBƌ ;ZwS8eYS8fRnUXZɯYiJ29_YcS3K>FR7Q${ 3"I.uߛEVu= c{@ƖK)jSVX|O;ծ,9x+w+U^']ƐpIENDB`n=voupI7;p PNG  IHDR]PagAMA|Q cHRMR@}y<s== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz pHYs  ~tEXtSoftwarePaint.NET v3.08er2IDATx^{Yg~**($dAF C^@UWuOL·HTRTJyΓI*22ƍ_sogV X-0M- еjX},Z7X}ƞƶ( ?vǟzZ]?=/3~=Z^>viG S԰Su¬Nͅ`ǎKpo 3P;x{ǽ7Iڣ nwqQeËEܳ{V| \]L2TRr-*D^ٱb4*}H({Wlx㜨OYеkL4PH=';Qq9 ÐҴo%u,N,yb-ƶս P3_SH@IgNt:#Qp䵇!-\Wa8*#Zd exCKiA׺&uaYJ}%koھl4' %(XZcB-N.@i!< /?sŷ9`ugqվm|z{kqQսDSrLyCX(n[Eo[W p}5959Ȥn@V|#qy=M8-k]X~j~+Q2LK{1N p*m1J qY4Fdb sQSC f/ޞ5ѷlTH\DM/ݞe&|J·WJ7"W@[*Z㯢4j7j7 A8B̛ȦM~'8׿MXWօhVTJE^kli%v\ʟ^}L{B>¥J[$ nJu?5L셋q*W\Z 󽺽PӽL4{KZ0nQp a tbbdDpsMaH{ԧڕdztkRW涫NCEɟ] uS]^j+*&-~h=`ֵ`(BjB dt k@W*t h)u *ޛ Po;gzcϽuZ &Nՠ+At*W+‰'Q(p"/$,^- ThcKm@P< Frm 2пsGNwoYj}p SniB.apmV(m~>_Sr އtx lhg ]+ւ@\t+8f@<ւ1v%JtUt>ABi]1[еu@7-PWNӭj_Vf >f+t0xԪ@l̚Ѹp 7\={ zi*Ws{{f/jy~`]s3 ?9 ݔgt bR<=VRjj'fOX~=oFJ oZJTP "=] %*[9(\ŏp1pb#P~>.SlɈB]u߇N0yւ51& #*7f JHKt9vXn$P߉swz1.=DРx-ZY?n>e<'#3DٖsrAI+tfU\4WB[ 8+Qr/ u8pb>O6Eݾ~ c`3=}}dX螚@0Y&> AElUNLFkWzt9sFrz{{_)w(((1ݾ}K,y.rƶZ;򕺧{>3^гm,2lyۼ:Ne׆6q^t7/pv ~H;߽pZps]Qc+9 p'\3!};+qa^-wE])`.3];c~cnGiWon/?[]mk釸{#9Qğ ̇-\a8QOJ( ,y̻ި|EA/lM].bN\v}>m>jq~p-2W'JHᛚ8izr0o>e_.|LBrCg4r9C[ƉYmp[qY Śnڋpf.jЍӾQ;)0ku` ]\DF*۫EyfLկ ̞JpE4+p^?(}ńignӿ_nȽz;y+d m!]րk|>UQٴnp{ .h'\\sĻ7՜uf)*Jf*HTǕ8k)[-?epEpLѡ&#s! qJ(V`A7AwhnLnCe3`zbX, == !J e1*(G BPmYѭP܍@Ž8\ɾXu`."QP.=ߢEOJ 䠪%5vѶ#qugV&^`3|q[9#N.]Q9T9T^ t_R %;_ŖJĔF]Itc5.r9]Xtqt֎>伸z.ҞuȿZo݉DP^&΅ tR+\ꇔH+;?ņzs{ORx!:1 ݁,) o S B"³EjljAL[3(YW94{UФMan @7O4kAl)EL1宥GCzaM\5m}r2ԯ ю*6tܴq\~|`/vaqolʚis'X}|xofKò=xߢiX?WgĭdαVm`p$73ėHx/>Dc?< B z9b-5\ ?7>u0fJ-.*NU=2p&ޣZ~; Â]p+uH.Yy*\Eljy \Y#:[ ^kY_mx4| e/Gp83p~)c9-GHyW *Y,ÁfxRJ8Wdiw 푸.q<. }^jCϷtס<Z\/J}kqwqn ^B" 21i'bݴF*T̚@\KKn,<]I+ e^U1CםvTDr{v'-zt@wʨ[m`LToz:ȿ98iC6ଯhM}x?KC#1o{'ȓeibΉ]]岔0$5PC; ^ؘ; ]tEΨ0a$h"}Е6uUJƩTL@nGkl3ANk6DXB/Ӏm6gxVڙA]k~yr|lZO8aLkPјKOw#U`^J@Go;ANa 3jʑ]WmG lHz3~S*Tes`H 'E@5. }I}dAn;m}8؇.\Nf5B7EnDY tl`lݔ4>lN4;K~4]"hAׂu5ЕN[]}WB OlsdhiUrئm FZ :DTтkel suqw` cMgtixσHIn 4+*qBrobWu>oQ|N|ӘJDzOpLRmǙ m4"-wW}N #s@v_dBW>c,P2wTg J;/Wkg[}&1 )wjЕZ ,D?e%7װީ\U*}!'νG;QtMM=}ĕ_8Q PnpvTaA/ڧH9!!T/z=x0$t395 t'Y+S~~iu67MT2(T -JQʯmTs穊sr\~W˧ZJ}ߪOE9AW,rw^&&B =vqZX6LMNtUՎF͠!WV (Tο:6Wiۨ; ٿ ީ8`:zh}Oy8>){8}7tC5X==7WD֐Xꅯytt t'x* Ê]vTȧΙ+jWf? s ̦ëQ4t. CuJbE* U]+~+Qգiֻ:{{!-gaQH~&ԉ 2 ] BJա<]fe|0 MqTՂ]+r1O5tE] MYUTkco3誀د1#Ph/g+u.+}qj[ss),{W8MKP7\0{A78N*+7DB H5p!*-VWB4~b>@Js.b1Rkx*W~rE5;Tuƥ~fCe(݋PUkpɶ˽X FBa\mPUr[Qjӌ@as*Rk}EH{J>F2gr [AB^Xw?5cd +(NұƲV>nfQΉA,Aұ;hvR9&WvusIZ WXh}`[Iw!F2TwJuUZ7ܯ2oMAZ7^.@cz"fxl.yA)^.+^|7Ւ)StyXE:ktdj~W.P9S5|)l?\fo= K]\.'v Rt9ۖ ڳT{ef(檼GYi6iW Tus4 'tw m̰f l) Csv(t:]*:xkTlv4{d`$d d9;>S *_yf+Э%hd-hˢ$ck]).^ŕ{;BʛK_M;tu#vk qM1\<{Il Rt߃V|&nOFgi\f&^_곍hor* Rc=d>wg\]P> rrvfwU_݁푚zY]+ZQ=GJZE(}\8xJ۞9]\]YG Rn\'%E 昭 >r FL~>7yUqhiS1#ͬ3MwT.gkӝvt3Tg9*+ۘ6>[l{MlJ|UroEŊ 7Xɕ{С[q+v?kK^Wp/ӑv q\l26kϽ10b+*W.Kƞ5玁T@WFhݹx3tiGMt::*l+Cu_f* [ܸtC-B왮\|T)С%TI\h24uke^Vܕ6wgf[&CU;aOku.?2 b怒QJr|<@^8~jҝBI=ʝۘNCSm/LG;\Sv*]%uWUr *_X]FE;L7tOp LZݵKPA[AZcs1$|ơ&Akt7cu;+^rT }IN-TޯrtU;~WWiGWX+ ])4-!';^ Q2 n\AO_L;]O7V}/# V}:RqcVPZumgT+]W/dwWLAW%Rz{0P] QޱTSd5D %!Nf(`̓M:t_v^zi0mvҍaL0{뢍w':~s+`u\V@]ng/s{=urry<~T&JLUNƾfBJT@Uri m)+ut;DlZ TRNŹqg1ޞa\$[a[;ʃVmA'RޕWSu t]+T t=]I%]] -h$gXK<%c|F*qe 2eדQ+\u5X[a\Q\Q\;.t99\]Nt] t\&{qv*ǭUV$5;NOCr.q VfhQ/"iYwÀ,N{ic}Cӣtoxa*m 47du*pp`C/VퟃU;g#b0@Zk!TnA] TSVQ 3*p3+Gi]\\֠[(Z|$T5RQ6GHXB/{WzKOj|GWj(ii/V"Хڽ0+ ^W,?7+wҠ+#d4KHSXUPAx'նvNeF+oxQiWW{A7eۢ4kA[(d-ݬ'A 惌ku}c N=toli#&;k|i+hav[?+pQJ_;+ce,zZkZU\Y-]Jb6eW=]fj<ym.|,dڢwzm ˞A!\~lr0{WᤈH83 \q Ԁ_eaلl 4ٶt= ] 9+g?هU_`@& TdRf}տ+JW셜 ǙŠ!g]wKA"9PF ÑUޜ&fkA?~w2X|yo^Ҡt|\-W8m%o- JX+J׀n`y,z*rUծc rUu9OI2|~N4t/tAHs98gqA8JEM{#\7Y^ɦlفҖ:TTvo梗(ڂ1Zwmc6q؂7?ٌGQPI{̩]ˑx/;p9u {iJW x/Sa,pc e/힍f(wy}NkH]2S\*!S*l0Lu`쑉Tꂜ^UhW6*mʱmAv!r^ FjݣQȢp+f!vC6Ur: 9!HZe\(Rfk_jeZ4c?_Dry zN^tZSk&3 n13̶]Js.豧Əg>}){}NGb{U vUezj wk~ b6Kwqx5 RʳT&ƙJTU]uvU4YfuLVnN-P)I8[ @% Эjވ?1N=5nl%ls5r>4GAg6F a> Gg!mY\Y'Y̖C#N0B=؆!YG CdtYDRV|+!udtYfR`0#R0,cL%6%pX0Q~E^ДnWt'Nu3Ik)_UI3S}G5 4< ^5J{ IM mAX€#|5Օ-U- 5ZV3{\qLn'8.cRA牢 pſHd V3UKSC6h׊L(`8*;fp-ʾn]\ș_|5'ԮKe"3Mlv1:4tu#?mDKR)Cki/5Ц< RU[ jY=\׌V[ÿFNwkdjﻉ;N0[yZn%h 3*wc6FFtBߡw69Jg1FM:;G}ڏ1OE>ikS^:s>*R@&-W8`(uǞ7黮~XJz}_W| e#Ӓk??{4n±7^㹫د%@&*! ϗoUYXvOK]|d]iBx6Cuց>0#hZQTYL@BH[݊ K>o%Kp7؆ _l i\1", "F9Ck3zdŋ7 f'YX}@X$<|NlHcm2skSZd ,_g$5#jVH\ۄ{Dl%Vd&N`q nѥu*sXDRoGR+X MG|4Lado, ; ?Y vaomO׺ VP ȺZ$ԋ?A a#=Z ՇTB8x]u|dxpG;\bU^`\[w$\,ø|vL2vYZ{W.dcґ~Zt0ߑ }Ps%ygyz˓|b'gExxoeʘ][JײQ< x#ӂֈ;HNߖ*LJ$T Tpk 3YLV{;ϬwT #Z F!rmuqwM!([ ĥeIzYsZ?cU?V͢va̧Xaր+|Y ҵcx>0-}?ԓ,([8|7)v=eqrn#ZD_ϧePE! ZnbƉ[~ZޔТ8qEW|Qx|y|qsM"LROSAH FbAͪaqrBcq_좭(k2bS<势za6[~{B-"> i9ZsׂuMfڏK:;߿6oԖ,Y:W#4uiZ մ*FYXf/- ?:(Ŏbl+O.˩9Z6[ݜMO 2aay7I iZ|z9yC^pPb/|7W/ڸY?|wְ6g|)> U-+힅;h}>DO ܿC_o[1H?Wk}`3Ҭ ɺ>`wۿg>7!`ݑy2K[a6 kgcMxhVTx>g"l43!=SHשQZ|uI21kµP ~ki>_=ru,HXwa_,%X16`͖EH9[&͔ՊC,tC+FҬזbWx /X Psg3 qϋ8WE8{&gr8}|4s!q*罨G?GؾG?6$KBgakFg}\dao4;߮,? s~~ mZеkLk'l)?E1qy108LEqr{5ի"U日\e/wJԦˀ<O~p==6-xPm ʱfuT5T!;volwz>`_bkX}ƞ%ޕcԤ<,Zе>0}~tE>IENDB`}DyK _Toc381527112}DyK _Toc381527112}DyK _Toc381527113}DyK _Toc381527113}DyK _Toc381527114}DyK _Toc381527114}DyK _Toc381527115}DyK _Toc381527115}DyK _Toc381527116}DyK _Toc381527116}DyK _Toc381527117}DyK _Toc381527117}DyK _Toc381527118}DyK _Toc381527118}DyK _Toc381527119}DyK _Toc381527119}DyK _Toc381527120}DyK _Toc381527120}DyK _Toc381527121}DyK _Toc381527121}DyK _Toc381527122}DyK _Toc381527122}DyK _Toc381527123}DyK _Toc381527123}DyK _Toc381527124}DyK _Toc381527124}DyK _Toc381527125}DyK _Toc381527125}DyK _Toc381527126}DyK _Toc381527126DyK yK http://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx7DyK yK http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/%5bMS-XLS%5d.pdfDyK yK http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm DyK  yK http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office technicalDyK yK Nhttp://xml.openoffice.org/general.htmlDyK yK http://projects.gnome.org/gnumeric/doc/file-format-gnumeric.shtmlM$$If!vh#vX#v:V F t65X5M$$If!vh#vX#v:V F t65X5M$$If!vh#vX#v:V F t65X5.sppppppppp00002 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@_HmH nH sH tH J`J ldNormal$a$OJQJ_HaJmHsHtHt@t  Heading 1*$$ & Fe<@&^e`5CJ KH OJQJ\^JaJ ~@~  Heading 21$ & F 5<@&^` 56CJOJQJ\]^JaJxx  Heading 31$ & F @ <@&^`5CJOJQJ\^JaJR@R Fl# Heading 4$<@&5CJOJQJ\aJDA`D Default Paragraph FontVi@V  Table Normal :V 44 la (k (0No List JOJ X+ DocumentTitle$$ & Fa$CJ04 @4 Footer  p#.)@.  Page Number4@"4 Header  p#6U`16 0 Hyperlink >*B*ph&@& pTOC 1.@. pTOC 2 ^O  ClassDiagramL$$d%d&d'dNOPQa$mH sH .. -pTOC 3 ^VOaV FL{Code$x-DM a$B*CJOJQJph333jj Q Table Grid7:V0 TVWatchOut^ & F $d%d&d'd-DM NOPQOJQJmH sH HH  Balloon TextCJOJQJ^JaJP/P TVOpmaakprofiel Consolas CJOJQJ^/^ TVOpmaakprofiel Consolas Vet5CJOJQJ\dd .ZHeading 1 - Appendix & Fe^e`mH sH JeJ  )n0HTML Preformatted OJQJaJ\/\ )n0HTML Preformatted CharOJQJ^JmHsHtHFV F 2jFollowedHyperlink >*B*ph:": #t Footnote Text"aJP/1P "tFootnote Text CharOJQJmHsHtH@& A@ tFootnote ReferenceH*\\ N|pTOC 4%dd^$CJOJPJQJ^JaJmH sH tH \\ N|pTOC 5&pdd^p$CJOJPJQJ^JaJmH sH tH \\ N|pTOC 6'Ldd^L$CJOJPJQJ^JaJmH sH tH \\ N|pTOC 7((dd^($CJOJPJQJ^JaJmH sH tH \\ N|pTOC 8)dd^$CJOJPJQJ^JaJmH sH tH \\ N|pTOC 9*dd^$CJOJPJQJ^JaJmH sH tH B/B z Char CharOJQJ_HmHsHtHBb`B q 0 HTML CodeCJOJPJQJ^JaJ/ 2hxPK![Content_Types].xmlN0EH-J@%ǎǢ|ș$زULTB l,3;rØJB+$G]7O٭VvnB`2ǃ,!"E3p#9GQd; H xuv 0F[,F᚜K sO'3w #vfSVbsؠyX p5veuw 1z@ l,i!b I jZ2|9L$Z15xl.(zm${d:\@'23œln$^-@^i?D&|#td!6lġB"&63yy@t!HjpU*yeXry3~{s:FXI O5Y[Y!}S˪.7bd|n]671. tn/w/+[t6}PsںsL. J;̊iN $AI)t2 Lmx:(}\-i*xQCJuWl'QyI@ھ m2DBAR4 w¢naQ`ԲɁ W=0#xBdT/.3-F>bYL%׭˓KK 6HhfPQ=h)GBms]_Ԡ'CZѨys v@c])h7Jهic?FS.NP$ e&\Ӏ+I "'%QÕ@c![paAV.9Hd<ӮHVX*%A{Yr Aբ pxSL9":3U5U NC(p%u@;[d`4)]t#9M4W=P5*f̰lk<_X-C wT%Ժ}B% Y,] A̠&oʰŨ; \lc`|,bUvPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 0_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!R%theme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] =z;v MMMMMM;;;>+ 7 ~   Y!$*-02L6:R={?AkEjGI"KLVN-P RTX[H^@behlenvy|}vk{BEFGHIJKLMNPQRTVWXY[\^_`bcdefghijlmnpqrtuwyz|~:"*i4<KDT;^Ck`oy}~qCDOSUZ]akosvx{}6RVq,./1Qn8:;=]3c]y{|~;n478: Z  x |  CLaY6Y@Yz X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%̕XXXXXXXX$&(A]a| :HMf8>!!U! /Xb$807>,#j2sjb$voupI7;p ={j@< $(    S LA. Q`TQ`T#" `?  S LA. Q`TQ`T#" `?  c AV phpexcel_logo zHXAXMDXMRXMS QOXzHX#" `?  c AV phpexcel_logo zHXAXMDXMRXMS QOXzHX#" `?0(  B S  ?>X &k@y>-@X &k@y>-@ _Toc381527112 _Toc381527113 _Toc381527114 _Toc381527115 _Toc381527116 _Toc381527117 _Toc381527118 _Toc381527119 _Ref275604563 _Toc381527120 _Toc381527121 _Toc381527122 _Toc381527123 _Toc381527124 _Toc381527125 _Toc3815271267=6y *O+L1;:;:RMVcg=prz UP *x+u1|:|:MWcgKpsz@G@Gzz9*urn:schemas-microsoft-com:office:smarttagsplace8*urn:schemas-microsoft-com:office:smarttagsCity Txxxxxxxxxxxxxxyyg_gagggggggggiimmmmmoooopp2p4p=\'fDT9J;QTV!^*.g ]i |  ~d h& C I  }a 1 J K{ x:SG&)OvX >, K e2 S]5pW2wFk )KANXF\i)n4 ??]c !U!"Fl#G<$%,A%}L% &6&N&d&'~i'(((v8)<) *wO*X+y,-- ..2./w/2-2W2h@3X3u3 4]X4$5x56]96"8;8 }9|:@;R?>>gU %u%+ ^{ *- = |"R@ []l~ j%n/;PSVa6tF BC/j.89WXH]LzbId5gxl#cr2w 2\<Kj-#4mqa 7,(b]x`Kw!yS@n-mrow3@cU.?}077c9Z6,J|=C925b^DL'fy4Ke,rw< p\rk{hu{S2DBRM\(n8r<i*gT]hfq+KM8_r0<>OVQMezl @m1KOE^ao)aY9^ml:B%2d|=4 #4>B Z)~ p>v$E}@^?~.QEEc_*FN~-%6.KMDbEvxx@ z@Unknown G.Cx Times New Roman5Symbol3. *Cx Arial7.@Calibri?= *Cx Courier NewA. Trebuchet MS5. .[`)Tahoma9 Webdings;WingdingsA$BCambria Math"1s#' f(f=f=!24hxhx 3QHX %2! xx PHPExcel User DocumentationReading Spreadsheet Files Mark Baker Mark Baker'                           ! " # $ % & Oh+'0( <H h t  PHPExcel User DocumentationReading Spreadsheet Files Mark Baker Normal.dotm Mark Baker21Microsoft Office Word@@*83\@r8D@(+6f՜.+,D՜.+,< px  Maarten BalliauwPHPExcel at CodePlex=hx PHPExcel User Documentation Title (PX  _PID_HLINKSVersionA tpx7http://websec.io/2012/08/27/Preventing-XEE-in-PHP.htmlT uBhttp://projects.gnome.org/gnumeric/doc/file-format-gnumeric.shtml${r'http://xml.openoffice.org/general.html ]oBhttp://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office technicallQhttp://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htmPiEhttp://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspxprfchttp://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/%5bMS-XLS%5d.pdfmlcChttp://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx1\_Toc3815271261V_Toc3815271251P_Toc3815271241J_Toc3815271231D_Toc3815271221>_Toc38152712118_Toc38152712012_Toc3815271191,_Toc3815271181&_Toc3815271171 _Toc3815271161_Toc3815271151_Toc3815271141_Toc3815271131_Toc3815271121.8.0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678:;<=>?@BCDEFGHMNQRoot Entry FЉ.+6PData 1Table WordDocument  SummaryInformation(9DocumentSummaryInformation8AMsoDataStore.+6.+6WSVAQ4EUOY5A0Q==2.+6.+6Item  PropertiesUCompObj r   F Microsoft Word 97-2003 Document MSWordDocWord.Document.89q