diff --git a/src/examples/src/org/apache/poi/hssf/usermodel/examples/Hyperlinks.java b/src/examples/src/org/apache/poi/hssf/usermodel/examples/Hyperlinks.java index 456df81486..0872749d02 100755 --- a/src/examples/src/org/apache/poi/hssf/usermodel/examples/Hyperlinks.java +++ b/src/examples/src/org/apache/poi/hssf/usermodel/examples/Hyperlinks.java @@ -1,89 +1,89 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.usermodel.examples; - -import org.apache.poi.hssf.usermodel.*; -import org.apache.poi.hssf.util.HSSFColor; - -import java.io.IOException; -import java.io.FileOutputStream; - -/** - * Demonstrates how to create hyperlinks. - * - * @author Yegor Kozlov (yegor at apach.org) - */ -public class Hyperlinks { - - public static void main(String[] args) throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - - //cell style for hyperlinks - //by default hyperlinks are blue and underlined - HSSFCellStyle hlink_style = wb.createCellStyle(); - HSSFFont hlink_font = wb.createFont(); - hlink_font.setUnderline(HSSFFont.U_SINGLE); - hlink_font.setColor(HSSFColor.BLUE.index); - hlink_style.setFont(hlink_font); - - HSSFCell cell; - HSSFSheet sheet = wb.createSheet("Hyperlinks"); - - //URL - cell = sheet.createRow(0).createCell(0); - cell.setCellValue("URL Link"); - HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL); - link.setAddress("http://poi.apache.org/"); - cell.setHyperlink(link); - cell.setCellStyle(hlink_style); - - //link to a file in the current directory - cell = sheet.createRow(1).createCell(0); - cell.setCellValue("File Link"); - link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE); - link.setAddress("link1.xls"); - cell.setHyperlink(link); - cell.setCellStyle(hlink_style); - - //e-mail link - cell = sheet.createRow(2).createCell(0); - cell.setCellValue("Email Link"); - link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL); - //note, if subject contains white spaces, make sure they are url-encoded - link.setAddress("mailto:poi@apache.org?subject=Hyperlinks"); - cell.setHyperlink(link); - cell.setCellStyle(hlink_style); - - //link to a place in this workbook - - //create a target sheet and cell - HSSFSheet sheet2 = wb.createSheet("Target Sheet"); - sheet2.createRow(0).createCell(0).setCellValue("Target Cell"); - - cell = sheet.createRow(3).createCell(0); - cell.setCellValue("Worksheet Link"); - link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT); - link.setAddress("'Target Sheet'!A1"); - cell.setHyperlink(link); - cell.setCellStyle(hlink_style); - - FileOutputStream out = new FileOutputStream("hssf-links.xls"); - wb.write(out); - out.close(); - } -} +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hssf.usermodel.examples; + +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; + +import java.io.IOException; +import java.io.FileOutputStream; + +/** + * Demonstrates how to create hyperlinks. + * + * @author Yegor Kozlov (yegor at apach.org) + */ +public class Hyperlinks { + + public static void main(String[] args) throws IOException { + HSSFWorkbook wb = new HSSFWorkbook(); + + //cell style for hyperlinks + //by default hyperlinks are blue and underlined + HSSFCellStyle hlink_style = wb.createCellStyle(); + HSSFFont hlink_font = wb.createFont(); + hlink_font.setUnderline(HSSFFont.U_SINGLE); + hlink_font.setColor(HSSFColor.BLUE.index); + hlink_style.setFont(hlink_font); + + HSSFCell cell; + HSSFSheet sheet = wb.createSheet("Hyperlinks"); + + //URL + cell = sheet.createRow(0).createCell(0); + cell.setCellValue("URL Link"); + HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL); + link.setAddress("http://poi.apache.org/"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //link to a file in the current directory + cell = sheet.createRow(1).createCell(0); + cell.setCellValue("File Link"); + link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE); + link.setAddress("link1.xls"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //e-mail link + cell = sheet.createRow(2).createCell(0); + cell.setCellValue("Email Link"); + link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL); + //note, if subject contains white spaces, make sure they are url-encoded + link.setAddress("mailto:poi@apache.org?subject=Hyperlinks"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + //link to a place in this workbook + + //create a target sheet and cell + HSSFSheet sheet2 = wb.createSheet("Target Sheet"); + sheet2.createRow(0).createCell(0).setCellValue("Target Cell"); + + cell = sheet.createRow(3).createCell(0); + cell.setCellValue("Worksheet Link"); + link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT); + link.setAddress("'Target Sheet'!A1"); + cell.setHyperlink(link); + cell.setCellStyle(hlink_style); + + FileOutputStream out = new FileOutputStream("hssf-links.xls"); + wb.write(out); + out.close(); + } +} diff --git a/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java b/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java index 8d3fcf8224..101eceda7b 100755 --- a/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java +++ b/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java @@ -1,324 +1,325 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ -package org.apache.poi.ss.examples; - -import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import java.util.Map; -import java.util.HashMap; -import java.util.Calendar; -import java.io.FileOutputStream; -import java.text.SimpleDateFormat; - -/** - * A business plan demo - * Usage: - * BusinessPlan -xls|xlsx - * - * @author Yegor Kozlov - */ -public class BusinessPlan { - - private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM"); - - private static final String[] titles = { - "ID", "Project Name", "Owner", "Days", "Start", "End"}; - - //sample data to fill the sheet. - private static final String[][] data = { - {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null, - "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"}, - null, - {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null, - "x", "x", null, null, null, null, null, null, null, null, null}, - {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null, - "x", null, null, null, null, null, null, null, null, null, null}, - {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null, - "x", "x", null, null, null, null, null, null, null, null, null}, - {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null, - "x", "x", null, null, null, null, null, null, null, null, null}, - null, - {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null, - null, "x", "x", "x", "x", null, null, null, null, null, null}, - {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null, - null, "x", null, null, null, null, null, null, null, null, null}, - {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null, - null, "x", "x", null, null, null, null, null, null, null, null}, - {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null, - null, null, "x", "x", null, null, null, null, null, null, null}, - {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null, - null, null, null, "x", "x", null, null, null, null, null, null}, - {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null, - null, null, null, null, "x", null, null, null, null, null, null}, - null, - {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null, - null, null, null, null, "x", "x", "x", "x", "x", "x", "x"}, - {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null, - null, null, null, null, "x", null, null, null, null, null, null}, - {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null, - null, null, null, null, "x", "x", null, null, null, null, null}, - {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null, - null, null, null, null, null, "x", null, null, null, null, null}, - }; - - public static void main(String[] args) throws Exception { - Workbook wb; - - if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); - else wb = new XSSFWorkbook(); - - Map styles = createStyles(wb); - - Sheet sheet = wb.createSheet("Business Plan"); - - //turn off gridlines - sheet.setDisplayGridlines(false); - sheet.setPrintGridlines(false); - sheet.setFitToPage(true); - sheet.setHorizontallyCenter(true); - PrintSetup printSetup = sheet.getPrintSetup(); - printSetup.setLandscape(true); - - //the following three statements are required only for HSSF - sheet.setAutobreaks(true); - printSetup.setFitHeight((short)1); - printSetup.setFitWidth((short)1); - - //the header row: centered text in 48pt font - Row headerRow = sheet.createRow(0); - headerRow.setHeightInPoints(12.75f); - for (int i = 0; i < titles.length; i++) { - Cell cell = headerRow.createCell(i); - cell.setCellValue(titles[i]); - cell.setCellStyle(styles.get("header")); - } - //columns for 11 weeks starting from 9-Jul - Calendar calendar = Calendar.getInstance(); - int year = calendar.get(Calendar.YEAR); - - calendar.setTime(fmt.parse("9-Jul")); - calendar.set(Calendar.YEAR, year); - for (int i = 0; i < 11; i++) { - Cell cell = headerRow.createCell(titles.length + i); - cell.setCellValue(calendar); - cell.setCellStyle(styles.get("header_date")); - calendar.roll(Calendar.WEEK_OF_YEAR, true); - } - //freeze the first row - sheet.createFreezePane(0, 1); - - Row row; - Cell cell; - int rownum = 1; - for (int i = 0; i < data.length; i++, rownum++) { - row = sheet.createRow(rownum); - if(data[i] == null) continue; - - for (int j = 0; j < data[i].length; j++) { - cell = row.createCell(j); - String styleName; - boolean isHeader = i == 0 || data[i-1] == null; - switch(j){ - case 0: - if(isHeader) { - styleName = "cell_b"; - cell.setCellValue(Double.parseDouble(data[i][j])); - } else { - styleName = "cell_normal"; - cell.setCellValue(data[i][j]); - } - break; - case 1: - if(isHeader) { - styleName = i == 0 ? "cell_h" : "cell_bb"; - } else { - styleName = "cell_indented"; - } - cell.setCellValue(data[i][j]); - break; - case 2: - styleName = isHeader ? "cell_b" : "cell_normal"; - cell.setCellValue(data[i][j]); - break; - case 3: - styleName = isHeader ? "cell_b_centered" : "cell_normal_centered"; - cell.setCellValue(Integer.parseInt(data[i][j])); - break; - case 4: { - calendar.setTime(fmt.parse(data[i][j])); - calendar.set(Calendar.YEAR, year); - cell.setCellValue(calendar); - styleName = isHeader ? "cell_b_date" : "cell_normal_date"; - break; - } - case 5: { - int r = rownum + 1; - String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")"; - cell.setCellFormula(fmla); - styleName = isHeader ? "cell_bg" : "cell_g"; - break; - } - default: - styleName = data[i][j] != null ? "cell_blue" : "cell_normal"; - } - - cell.setCellStyle(styles.get(styleName)); - } - } - - //group rows for each phase, row numbers are 0-based - sheet.groupRow(4, 6); - sheet.groupRow(9, 13); - sheet.groupRow(16, 18); - - //set column widths, the width is measured in units of 1/256th of a character width - sheet.setColumnWidth(0, 256*6); - sheet.setColumnWidth(1, 256*33); - sheet.setColumnWidth(2, 256*20); - sheet.setZoom(3, 4); - - - // Write the output to a file - String file = "businessplan.xls"; - if(wb instanceof XSSFWorkbook) file += "x"; - FileOutputStream out = new FileOutputStream(file); - wb.write(out); - out.close(); - } - - /** - * create a library of cell styles - */ - private static Map createStyles(Workbook wb){ - Map styles = new HashMap(); - DataFormat df = wb.createDataFormat(); - - CellStyle style; - Font headerFont = wb.createFont(); - headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setFont(headerFont); - styles.put("header", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setFont(headerFont); - style.setDataFormat(df.getFormat("d-mmm")); - styles.put("header_date", style); - - Font font1 = wb.createFont(); - font1.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setFont(font1); - styles.put("cell_b", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setFont(font1); - styles.put("cell_b_centered", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(font1); - style.setDataFormat(df.getFormat("d-mmm")); - styles.put("cell_b_date", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(font1); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setDataFormat(df.getFormat("d-mmm")); - styles.put("cell_g", style); - - Font font2 = wb.createFont(); - font2.setColor(IndexedColors.BLUE.getIndex()); - font2.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setFont(font2); - styles.put("cell_bb", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(font1); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setDataFormat(df.getFormat("d-mmm")); - styles.put("cell_bg", style); - - Font font3 = wb.createFont(); - font3.setFontHeightInPoints((short)14); - font3.setColor(IndexedColors.DARK_BLUE.getIndex()); - font3.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setFont(font3); - style.setWrapText(true); - styles.put("cell_h", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setWrapText(true); - styles.put("cell_normal", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setWrapText(true); - styles.put("cell_normal_centered", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setWrapText(true); - style.setDataFormat(df.getFormat("d-mmm")); - styles.put("cell_normal_date", style); - - style = createBorderedStyle(wb); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setIndention((short)1); - style.setWrapText(true); - styles.put("cell_indented", style); - - style = createBorderedStyle(wb); - style.setFillForegroundColor(IndexedColors.BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - styles.put("cell_blue", style); - - return styles; - } - - private static CellStyle createBorderedStyle(Workbook wb){ - CellStyle style = wb.createCellStyle(); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderTop(CellStyle.BORDER_THIN); - style.setTopBorderColor(IndexedColors.BLACK.getIndex()); - return style; - } -} +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.examples; + +import org.apache.poi.xssf.usermodel.*; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import java.util.Map; +import java.util.HashMap; +import java.util.Calendar; +import java.io.FileOutputStream; +import java.text.SimpleDateFormat; + +/** + * A business plan demo + * Usage: + * BusinessPlan -xls|xlsx + * + * @author Yegor Kozlov + */ +public class BusinessPlan { + + private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM"); + + private static final String[] titles = { + "ID", "Project Name", "Owner", "Days", "Start", "End"}; + + //sample data to fill the sheet. + private static final String[][] data = { + {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null, + "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"}, + null, + {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null, + "x", "x", null, null, null, null, null, null, null, null, null}, + {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null, + "x", null, null, null, null, null, null, null, null, null, null}, + {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null, + "x", "x", null, null, null, null, null, null, null, null, null}, + {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null, + "x", "x", null, null, null, null, null, null, null, null, null}, + null, + {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null, + null, "x", "x", "x", "x", null, null, null, null, null, null}, + {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null, + null, "x", null, null, null, null, null, null, null, null, null}, + {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null, + null, "x", "x", null, null, null, null, null, null, null, null}, + {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null, + null, null, "x", "x", null, null, null, null, null, null, null}, + {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null, + null, null, null, "x", "x", null, null, null, null, null, null}, + {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null, + null, null, null, null, "x", null, null, null, null, null, null}, + null, + {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null, + null, null, null, null, "x", "x", "x", "x", "x", "x", "x"}, + {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null, + null, null, null, null, "x", null, null, null, null, null, null}, + {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null, + null, null, null, null, "x", "x", null, null, null, null, null}, + {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null, + null, null, null, null, null, "x", null, null, null, null, null}, + }; + + public static void main(String[] args) throws Exception { + Workbook wb; + + if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); + else wb = new XSSFWorkbook(); + + Map styles = createStyles(wb); + + Sheet sheet = wb.createSheet("Business Plan"); + + //turn off gridlines + sheet.setDisplayGridlines(false); + sheet.setPrintGridlines(false); + sheet.setFitToPage(true); + sheet.setHorizontallyCenter(true); + PrintSetup printSetup = sheet.getPrintSetup(); + printSetup.setLandscape(true); + + //the following three statements are required only for HSSF + sheet.setAutobreaks(true); + printSetup.setFitHeight((short)1); + printSetup.setFitWidth((short)1); + + //the header row: centered text in 48pt font + Row headerRow = sheet.createRow(0); + headerRow.setHeightInPoints(12.75f); + for (int i = 0; i < titles.length; i++) { + Cell cell = headerRow.createCell(i); + cell.setCellValue(titles[i]); + cell.setCellStyle(styles.get("header")); + } + //columns for 11 weeks starting from 9-Jul + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + calendar.setTime(fmt.parse("9-Jul")); + calendar.set(Calendar.YEAR, year); + for (int i = 0; i < 11; i++) { + Cell cell = headerRow.createCell(titles.length + i); + cell.setCellValue(calendar); + cell.setCellStyle(styles.get("header_date")); + calendar.roll(Calendar.WEEK_OF_YEAR, true); + } + //freeze the first row + sheet.createFreezePane(0, 1); + + Row row; + Cell cell; + int rownum = 1; + for (int i = 0; i < data.length; i++, rownum++) { + row = sheet.createRow(rownum); + if(data[i] == null) continue; + + for (int j = 0; j < data[i].length; j++) { + cell = row.createCell(j); + String styleName; + boolean isHeader = i == 0 || data[i-1] == null; + switch(j){ + case 0: + if(isHeader) { + styleName = "cell_b"; + cell.setCellValue(Double.parseDouble(data[i][j])); + } else { + styleName = "cell_normal"; + cell.setCellValue(data[i][j]); + } + break; + case 1: + if(isHeader) { + styleName = i == 0 ? "cell_h" : "cell_bb"; + } else { + styleName = "cell_indented"; + } + cell.setCellValue(data[i][j]); + break; + case 2: + styleName = isHeader ? "cell_b" : "cell_normal"; + cell.setCellValue(data[i][j]); + break; + case 3: + styleName = isHeader ? "cell_b_centered" : "cell_normal_centered"; + cell.setCellValue(Integer.parseInt(data[i][j])); + break; + case 4: { + calendar.setTime(fmt.parse(data[i][j])); + calendar.set(Calendar.YEAR, year); + cell.setCellValue(calendar); + styleName = isHeader ? "cell_b_date" : "cell_normal_date"; + break; + } + case 5: { + int r = rownum + 1; + String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")"; + cell.setCellFormula(fmla); + styleName = isHeader ? "cell_bg" : "cell_g"; + break; + } + default: + styleName = data[i][j] != null ? "cell_blue" : "cell_normal"; + } + + cell.setCellStyle(styles.get(styleName)); + } + } + + //group rows for each phase, row numbers are 0-based + sheet.groupRow(4, 6); + sheet.groupRow(9, 13); + sheet.groupRow(16, 18); + + //set column widths, the width is measured in units of 1/256th of a character width + sheet.setColumnWidth(0, 256*6); + sheet.setColumnWidth(1, 256*33); + sheet.setColumnWidth(2, 256*20); + sheet.setZoom(3, 4); + + + // Write the output to a file + String file = "businessplan.xls"; + if(wb instanceof XSSFWorkbook) file += "x"; + FileOutputStream out = new FileOutputStream(file); + wb.write(out); + out.close(); + } + + /** + * create a library of cell styles + */ + private static Map createStyles(Workbook wb){ + Map styles = new HashMap(); + DataFormat df = wb.createDataFormat(); + + CellStyle style; + Font headerFont = wb.createFont(); + headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setFont(headerFont); + styles.put("header", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setFont(headerFont); + style.setDataFormat(df.getFormat("d-mmm")); + styles.put("header_date", style); + + Font font1 = wb.createFont(); + font1.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setFont(font1); + styles.put("cell_b", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setFont(font1); + styles.put("cell_b_centered", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(font1); + style.setDataFormat(df.getFormat("d-mmm")); + styles.put("cell_b_date", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(font1); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setDataFormat(df.getFormat("d-mmm")); + styles.put("cell_g", style); + + Font font2 = wb.createFont(); + font2.setColor(IndexedColors.BLUE.getIndex()); + font2.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setFont(font2); + styles.put("cell_bb", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(font1); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setDataFormat(df.getFormat("d-mmm")); + styles.put("cell_bg", style); + + Font font3 = wb.createFont(); + font3.setFontHeightInPoints((short)14); + font3.setColor(IndexedColors.DARK_BLUE.getIndex()); + font3.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setFont(font3); + style.setWrapText(true); + styles.put("cell_h", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setWrapText(true); + styles.put("cell_normal", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setWrapText(true); + styles.put("cell_normal_centered", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setWrapText(true); + style.setDataFormat(df.getFormat("d-mmm")); + styles.put("cell_normal_date", style); + + style = createBorderedStyle(wb); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setIndention((short)1); + style.setWrapText(true); + styles.put("cell_indented", style); + + style = createBorderedStyle(wb); + style.setFillForegroundColor(IndexedColors.BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + styles.put("cell_blue", style); + + return styles; + } + + private static CellStyle createBorderedStyle(Workbook wb){ + CellStyle style = wb.createCellStyle(); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setRightBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderTop(CellStyle.BORDER_THIN); + style.setTopBorderColor(IndexedColors.BLACK.getIndex()); + return style; + } +} diff --git a/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java b/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java index 5cdf794841..bb120861f6 100755 --- a/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java +++ b/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java @@ -1,242 +1,243 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ -package org.apache.poi.ss.examples; - -import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import java.io.FileOutputStream; -import java.util.Calendar; -import java.util.Map; -import java.util.HashMap; - -/** - * A monthly calendar created using Apache POI. Each month is on a separate sheet. - *
- * Usage:
- * CalendarDemo -xls|xlsx 
- * 
- * - * @author Yegor Kozlov - */ -public class CalendarDemo { - - private static final String[] days = { - "Sunday", "Monday", "Tuesday", - "Wednesday", "Thursday", "Friday", "Saturday"}; - - private static final String[] months = { - "January", "February", "March","April", "May", "June","July", "August", - "September","October", "November", "December"}; - - public static void main(String[] args) throws Exception { - - Calendar calendar = Calendar.getInstance(); - boolean xlsx = true; - for (int i = 0; i < args.length; i++) { - if(args[i].charAt(0) == '-'){ - xlsx = args[i].equals("-xlsx"); - } else { - calendar.set(Calendar.YEAR, Integer.parseInt(args[i])); - } - } - int year = calendar.get(Calendar.YEAR); - - Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook(); - - Map styles = createStyles(wb); - - for (int month = 0; month < 12; month++) { - calendar.set(Calendar.MONTH, month); - calendar.set(Calendar.DAY_OF_MONTH, 1); - //create a sheet for each month - Sheet sheet = wb.createSheet(months[month]); - - //turn off gridlines - sheet.setDisplayGridlines(false); - sheet.setPrintGridlines(false); - sheet.setFitToPage(true); - sheet.setHorizontallyCenter(true); - PrintSetup printSetup = sheet.getPrintSetup(); - printSetup.setLandscape(true); - - //the following three statements are required only for HSSF - sheet.setAutobreaks(true); - printSetup.setFitHeight((short)1); - printSetup.setFitWidth((short)1); - - //the header row: centered text in 48pt font - Row headerRow = sheet.createRow(0); - headerRow.setHeightInPoints(80); - Cell titleCell = headerRow.createCell(0); - titleCell.setCellValue(months[month] + " " + year); - titleCell.setCellStyle(styles.get("title")); - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1")); - - //header with month titles - Row monthRow = sheet.createRow(1); - for (int i = 0; i < days.length; i++) { - //set column widths, the width is measured in units of 1/256th of a character width - sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide - sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide - sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1)); - Cell monthCell = monthRow.createCell(i*2); - monthCell.setCellValue(days[i]); - monthCell.setCellStyle(styles.get("month")); - } - - int cnt = 1, day=1; - int rownum = 2; - for (int j = 0; j < 6; j++) { - Row row = sheet.createRow(rownum++); - row.setHeightInPoints(100); - for (int i = 0; i < days.length; i++) { - Cell dayCell_1 = row.createCell(i*2); - Cell dayCell_2 = row.createCell(i*2 + 1); - - int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); - if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) { - dayCell_1.setCellValue(day); - calendar.set(Calendar.DAY_OF_MONTH, ++day); - - if(i == 0 || i == days.length-1) { - dayCell_1.setCellStyle(styles.get("weekend_left")); - dayCell_2.setCellStyle(styles.get("weekend_right")); - } else { - dayCell_1.setCellStyle(styles.get("workday_left")); - dayCell_2.setCellStyle(styles.get("workday_right")); - } - } else { - dayCell_1.setCellStyle(styles.get("grey_left")); - dayCell_2.setCellStyle(styles.get("grey_right")); - } - cnt++; - } - if(calendar.get(Calendar.MONTH) > month) break; - } - } - - // Write the output to a file - String file = "calendar.xls"; - if(wb instanceof XSSFWorkbook) file += "x"; - FileOutputStream out = new FileOutputStream(file); - wb.write(out); - out.close(); - } - - /** - * cell styles used for formatting calendar sheets - */ - private static Map createStyles(Workbook wb){ - Map styles = new HashMap(); - - short borderColor = IndexedColors.GREY_50_PERCENT.getIndex(); - - CellStyle style; - Font titleFont = wb.createFont(); - titleFont.setFontHeightInPoints((short)48); - titleFont.setColor(IndexedColors.DARK_BLUE.getIndex()); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFont(titleFont); - styles.put("title", style); - - Font monthFont = wb.createFont(); - monthFont.setFontHeightInPoints((short)12); - monthFont.setColor(IndexedColors.WHITE.getIndex()); - monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setFont(monthFont); - styles.put("month", style); - - Font dayFont = wb.createFont(); - dayFont.setFontHeightInPoints((short)14); - dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setVerticalAlignment(CellStyle.VERTICAL_TOP); - style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setLeftBorderColor(borderColor); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - style.setFont(dayFont); - styles.put("weekend_left", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_TOP); - style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(borderColor); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - styles.put("weekend_right", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setVerticalAlignment(CellStyle.VERTICAL_TOP); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setFillForegroundColor(IndexedColors.WHITE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setLeftBorderColor(borderColor); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - style.setFont(dayFont); - styles.put("workday_left", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_TOP); - style.setFillForegroundColor(IndexedColors.WHITE.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(borderColor); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - styles.put("workday_right", style); - - style = wb.createCellStyle(); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - styles.put("grey_left", style); - - style = wb.createCellStyle(); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(borderColor); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(borderColor); - styles.put("grey_right", style); - - return styles; - } -} +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.examples; + +import org.apache.poi.xssf.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import java.io.FileOutputStream; +import java.util.Calendar; +import java.util.Map; +import java.util.HashMap; + +/** + * A monthly calendar created using Apache POI. Each month is on a separate sheet. + *
+ * Usage:
+ * CalendarDemo -xls|xlsx 
+ * 
+ * + * @author Yegor Kozlov + */ +public class CalendarDemo { + + private static final String[] days = { + "Sunday", "Monday", "Tuesday", + "Wednesday", "Thursday", "Friday", "Saturday"}; + + private static final String[] months = { + "January", "February", "March","April", "May", "June","July", "August", + "September","October", "November", "December"}; + + public static void main(String[] args) throws Exception { + + Calendar calendar = Calendar.getInstance(); + boolean xlsx = true; + for (int i = 0; i < args.length; i++) { + if(args[i].charAt(0) == '-'){ + xlsx = args[i].equals("-xlsx"); + } else { + calendar.set(Calendar.YEAR, Integer.parseInt(args[i])); + } + } + int year = calendar.get(Calendar.YEAR); + + Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook(); + + Map styles = createStyles(wb); + + for (int month = 0; month < 12; month++) { + calendar.set(Calendar.MONTH, month); + calendar.set(Calendar.DAY_OF_MONTH, 1); + //create a sheet for each month + Sheet sheet = wb.createSheet(months[month]); + + //turn off gridlines + sheet.setDisplayGridlines(false); + sheet.setPrintGridlines(false); + sheet.setFitToPage(true); + sheet.setHorizontallyCenter(true); + PrintSetup printSetup = sheet.getPrintSetup(); + printSetup.setLandscape(true); + + //the following three statements are required only for HSSF + sheet.setAutobreaks(true); + printSetup.setFitHeight((short)1); + printSetup.setFitWidth((short)1); + + //the header row: centered text in 48pt font + Row headerRow = sheet.createRow(0); + headerRow.setHeightInPoints(80); + Cell titleCell = headerRow.createCell(0); + titleCell.setCellValue(months[month] + " " + year); + titleCell.setCellStyle(styles.get("title")); + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1")); + + //header with month titles + Row monthRow = sheet.createRow(1); + for (int i = 0; i < days.length; i++) { + //set column widths, the width is measured in units of 1/256th of a character width + sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide + sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide + sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1)); + Cell monthCell = monthRow.createCell(i*2); + monthCell.setCellValue(days[i]); + monthCell.setCellStyle(styles.get("month")); + } + + int cnt = 1, day=1; + int rownum = 2; + for (int j = 0; j < 6; j++) { + Row row = sheet.createRow(rownum++); + row.setHeightInPoints(100); + for (int i = 0; i < days.length; i++) { + Cell dayCell_1 = row.createCell(i*2); + Cell dayCell_2 = row.createCell(i*2 + 1); + + int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); + if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) { + dayCell_1.setCellValue(day); + calendar.set(Calendar.DAY_OF_MONTH, ++day); + + if(i == 0 || i == days.length-1) { + dayCell_1.setCellStyle(styles.get("weekend_left")); + dayCell_2.setCellStyle(styles.get("weekend_right")); + } else { + dayCell_1.setCellStyle(styles.get("workday_left")); + dayCell_2.setCellStyle(styles.get("workday_right")); + } + } else { + dayCell_1.setCellStyle(styles.get("grey_left")); + dayCell_2.setCellStyle(styles.get("grey_right")); + } + cnt++; + } + if(calendar.get(Calendar.MONTH) > month) break; + } + } + + // Write the output to a file + String file = "calendar.xls"; + if(wb instanceof XSSFWorkbook) file += "x"; + FileOutputStream out = new FileOutputStream(file); + wb.write(out); + out.close(); + } + + /** + * cell styles used for formatting calendar sheets + */ + private static Map createStyles(Workbook wb){ + Map styles = new HashMap(); + + short borderColor = IndexedColors.GREY_50_PERCENT.getIndex(); + + CellStyle style; + Font titleFont = wb.createFont(); + titleFont.setFontHeightInPoints((short)48); + titleFont.setColor(IndexedColors.DARK_BLUE.getIndex()); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFont(titleFont); + styles.put("title", style); + + Font monthFont = wb.createFont(); + monthFont.setFontHeightInPoints((short)12); + monthFont.setColor(IndexedColors.WHITE.getIndex()); + monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setFont(monthFont); + styles.put("month", style); + + Font dayFont = wb.createFont(); + dayFont.setFontHeightInPoints((short)14); + dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setVerticalAlignment(CellStyle.VERTICAL_TOP); + style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setLeftBorderColor(borderColor); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + style.setFont(dayFont); + styles.put("weekend_left", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_TOP); + style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setRightBorderColor(borderColor); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + styles.put("weekend_right", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setVerticalAlignment(CellStyle.VERTICAL_TOP); + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setFillForegroundColor(IndexedColors.WHITE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setLeftBorderColor(borderColor); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + style.setFont(dayFont); + styles.put("workday_left", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_TOP); + style.setFillForegroundColor(IndexedColors.WHITE.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setRightBorderColor(borderColor); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + styles.put("workday_right", style); + + style = wb.createCellStyle(); + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + styles.put("grey_left", style); + + style = wb.createCellStyle(); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setRightBorderColor(borderColor); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(borderColor); + styles.put("grey_right", style); + + return styles; + } +} diff --git a/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java b/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java index 3323c9e2d6..9598436589 100755 --- a/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java +++ b/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java @@ -1,304 +1,305 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ -package org.apache.poi.ss.examples; - -import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import java.util.Map; -import java.util.HashMap; -import java.io.FileOutputStream; - -/** - * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges. - * - * Usage: - * LoanCalculator -xls|xlsx - * - * @author Yegor Kozlov - */ -public class LoanCalculator { - - public static void main(String[] args) throws Exception { - Workbook wb; - - if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); - else wb = new XSSFWorkbook(); - - Map styles = createStyles(wb); - Sheet sheet = wb.createSheet("Loan Calculator"); - sheet.setPrintGridlines(false); - sheet.setDisplayGridlines(false); - - PrintSetup printSetup = sheet.getPrintSetup(); - printSetup.setLandscape(true); - sheet.setFitToPage(true); - sheet.setHorizontallyCenter(true); - - sheet.setColumnWidth(0, 3*256); - sheet.setColumnWidth(1, 3*256); - sheet.setColumnWidth(2, 11*256); - sheet.setColumnWidth(3, 14*256); - sheet.setColumnWidth(4, 14*256); - sheet.setColumnWidth(5, 14*256); - sheet.setColumnWidth(6, 14*256); - - createNames(wb); - - Row titleRow = sheet.createRow(0); - titleRow.setHeightInPoints(35); - for (int i = 1; i <= 7; i++) { - titleRow.createCell(i).setCellStyle(styles.get("title")); - } - Cell titleCell = titleRow.getCell(2); - titleCell.setCellValue("Simple Loan Calculator"); - sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1")); - - Row row = sheet.createRow(2); - Cell cell = row.createCell(4); - cell.setCellValue("Enter values"); - cell.setCellStyle(styles.get("item_right")); - - row = sheet.createRow(3); - cell = row.createCell(2); - cell.setCellValue("Loan amount"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellStyle(styles.get("input_$")); - cell.setAsActiveCell(); - - row = sheet.createRow(4); - cell = row.createCell(2); - cell.setCellValue("Annual interest rate"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellStyle(styles.get("input_%")); - - row = sheet.createRow(5); - cell = row.createCell(2); - cell.setCellValue("Loan period in years"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellStyle(styles.get("input_i")); - - row = sheet.createRow(6); - cell = row.createCell(2); - cell.setCellValue("Start date of loan"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellStyle(styles.get("input_d")); - - row = sheet.createRow(8); - cell = row.createCell(2); - cell.setCellValue("Monthly payment"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")"); - cell.setCellStyle(styles.get("formula_$")); - - row = sheet.createRow(9); - cell = row.createCell(2); - cell.setCellValue("Number of payments"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")"); - cell.setCellStyle(styles.get("formula_i")); - - row = sheet.createRow(10); - cell = row.createCell(2); - cell.setCellValue("Total interest"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")"); - cell.setCellStyle(styles.get("formula_$")); - - row = sheet.createRow(11); - cell = row.createCell(2); - cell.setCellValue("Total cost of loan"); - cell.setCellStyle(styles.get("item_left")); - cell = row.createCell(4); - cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")"); - cell.setCellStyle(styles.get("formula_$")); - - - // Write the output to a file - String file = "loan-calculator.xls"; - if(wb instanceof XSSFWorkbook) file += "x"; - FileOutputStream out = new FileOutputStream(file); - wb.write(out); - out.close(); - } - - /** - * cell styles used for formatting calendar sheets - */ - private static Map createStyles(Workbook wb){ - Map styles = new HashMap(); - - CellStyle style; - Font titleFont = wb.createFont(); - titleFont.setFontHeightInPoints((short)14); - titleFont.setFontName("Trebuchet MS"); - style = wb.createCellStyle(); - style.setFont(titleFont); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - styles.put("title", style); - - Font itemFont = wb.createFont(); - itemFont.setFontHeightInPoints((short)9); - itemFont.setFontName("Trebuchet MS"); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_LEFT); - style.setFont(itemFont); - styles.put("item_left", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - styles.put("item_right", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - style.setBorderRight(CellStyle.BORDER_DOTTED); - style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_DOTTED); - style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_DOTTED); - style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)")); - styles.put("input_$", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - style.setBorderRight(CellStyle.BORDER_DOTTED); - style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_DOTTED); - style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_DOTTED); - style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setDataFormat(wb.createDataFormat().getFormat("0.000%")); - styles.put("input_%", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - style.setBorderRight(CellStyle.BORDER_DOTTED); - style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_DOTTED); - style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_DOTTED); - style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setDataFormat(wb.createDataFormat().getFormat("0")); - styles.put("input_i", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setFont(itemFont); - style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy")); - styles.put("input_d", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - style.setBorderRight(CellStyle.BORDER_DOTTED); - style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_DOTTED); - style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_DOTTED); - style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00")); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - styles.put("formula_$", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_RIGHT); - style.setFont(itemFont); - style.setBorderRight(CellStyle.BORDER_DOTTED); - style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_DOTTED); - style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_DOTTED); - style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setDataFormat(wb.createDataFormat().getFormat("0")); - style.setBorderBottom(CellStyle.BORDER_DOTTED); - style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - styles.put("formula_i", style); - - return styles; - } - - //define named ranges for the inputs and formulas - public static void createNames(Workbook wb){ - Name name; - - name = wb.createName(); - name.setNameName("Interest_Rate"); - name.setRefersToFormula("'Loan Calculator'!$E$5"); - - name = wb.createName(); - name.setNameName("Loan_Amount"); - name.setRefersToFormula("'Loan Calculator'!$E$4"); - - name = wb.createName(); - name.setNameName("Loan_Start"); - name.setRefersToFormula("'Loan Calculator'!$E$7"); - - name = wb.createName(); - name.setNameName("Loan_Years"); - name.setRefersToFormula("'Loan Calculator'!$E$6"); - - name = wb.createName(); - name.setNameName("Number_of_Payments"); - name.setRefersToFormula("'Loan Calculator'!$E$10"); - - name = wb.createName(); - name.setNameName("Monthly_Payment"); - name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)"); - - name = wb.createName(); - name.setNameName("Total_Cost"); - name.setRefersToFormula("'Loan Calculator'!$E$12"); - - name = wb.createName(); - name.setNameName("Total_Interest"); - name.setRefersToFormula("'Loan Calculator'!$E$11"); - - name = wb.createName(); - name.setNameName("Values_Entered"); - name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)"); - } -} +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.examples; + +import org.apache.poi.xssf.usermodel.*; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import java.util.Map; +import java.util.HashMap; +import java.io.FileOutputStream; + +/** + * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges. + * + * Usage: + * LoanCalculator -xls|xlsx + * + * @author Yegor Kozlov + */ +public class LoanCalculator { + + public static void main(String[] args) throws Exception { + Workbook wb; + + if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); + else wb = new XSSFWorkbook(); + + Map styles = createStyles(wb); + Sheet sheet = wb.createSheet("Loan Calculator"); + sheet.setPrintGridlines(false); + sheet.setDisplayGridlines(false); + + PrintSetup printSetup = sheet.getPrintSetup(); + printSetup.setLandscape(true); + sheet.setFitToPage(true); + sheet.setHorizontallyCenter(true); + + sheet.setColumnWidth(0, 3*256); + sheet.setColumnWidth(1, 3*256); + sheet.setColumnWidth(2, 11*256); + sheet.setColumnWidth(3, 14*256); + sheet.setColumnWidth(4, 14*256); + sheet.setColumnWidth(5, 14*256); + sheet.setColumnWidth(6, 14*256); + + createNames(wb); + + Row titleRow = sheet.createRow(0); + titleRow.setHeightInPoints(35); + for (int i = 1; i <= 7; i++) { + titleRow.createCell(i).setCellStyle(styles.get("title")); + } + Cell titleCell = titleRow.getCell(2); + titleCell.setCellValue("Simple Loan Calculator"); + sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1")); + + Row row = sheet.createRow(2); + Cell cell = row.createCell(4); + cell.setCellValue("Enter values"); + cell.setCellStyle(styles.get("item_right")); + + row = sheet.createRow(3); + cell = row.createCell(2); + cell.setCellValue("Loan amount"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellStyle(styles.get("input_$")); + cell.setAsActiveCell(); + + row = sheet.createRow(4); + cell = row.createCell(2); + cell.setCellValue("Annual interest rate"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellStyle(styles.get("input_%")); + + row = sheet.createRow(5); + cell = row.createCell(2); + cell.setCellValue("Loan period in years"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellStyle(styles.get("input_i")); + + row = sheet.createRow(6); + cell = row.createCell(2); + cell.setCellValue("Start date of loan"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellStyle(styles.get("input_d")); + + row = sheet.createRow(8); + cell = row.createCell(2); + cell.setCellValue("Monthly payment"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")"); + cell.setCellStyle(styles.get("formula_$")); + + row = sheet.createRow(9); + cell = row.createCell(2); + cell.setCellValue("Number of payments"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")"); + cell.setCellStyle(styles.get("formula_i")); + + row = sheet.createRow(10); + cell = row.createCell(2); + cell.setCellValue("Total interest"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")"); + cell.setCellStyle(styles.get("formula_$")); + + row = sheet.createRow(11); + cell = row.createCell(2); + cell.setCellValue("Total cost of loan"); + cell.setCellStyle(styles.get("item_left")); + cell = row.createCell(4); + cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")"); + cell.setCellStyle(styles.get("formula_$")); + + + // Write the output to a file + String file = "loan-calculator.xls"; + if(wb instanceof XSSFWorkbook) file += "x"; + FileOutputStream out = new FileOutputStream(file); + wb.write(out); + out.close(); + } + + /** + * cell styles used for formatting calendar sheets + */ + private static Map createStyles(Workbook wb){ + Map styles = new HashMap(); + + CellStyle style; + Font titleFont = wb.createFont(); + titleFont.setFontHeightInPoints((short)14); + titleFont.setFontName("Trebuchet MS"); + style = wb.createCellStyle(); + style.setFont(titleFont); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + styles.put("title", style); + + Font itemFont = wb.createFont(); + itemFont.setFontHeightInPoints((short)9); + itemFont.setFontName("Trebuchet MS"); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_LEFT); + style.setFont(itemFont); + styles.put("item_left", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + styles.put("item_right", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + style.setBorderRight(CellStyle.BORDER_DOTTED); + style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderLeft(CellStyle.BORDER_DOTTED); + style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderTop(CellStyle.BORDER_DOTTED); + style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)")); + styles.put("input_$", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + style.setBorderRight(CellStyle.BORDER_DOTTED); + style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderLeft(CellStyle.BORDER_DOTTED); + style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderTop(CellStyle.BORDER_DOTTED); + style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setDataFormat(wb.createDataFormat().getFormat("0.000%")); + styles.put("input_%", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + style.setBorderRight(CellStyle.BORDER_DOTTED); + style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderLeft(CellStyle.BORDER_DOTTED); + style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderTop(CellStyle.BORDER_DOTTED); + style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setDataFormat(wb.createDataFormat().getFormat("0")); + styles.put("input_i", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setFont(itemFont); + style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy")); + styles.put("input_d", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + style.setBorderRight(CellStyle.BORDER_DOTTED); + style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderLeft(CellStyle.BORDER_DOTTED); + style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderTop(CellStyle.BORDER_DOTTED); + style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00")); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + styles.put("formula_$", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); + style.setFont(itemFont); + style.setBorderRight(CellStyle.BORDER_DOTTED); + style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderLeft(CellStyle.BORDER_DOTTED); + style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setBorderTop(CellStyle.BORDER_DOTTED); + style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setDataFormat(wb.createDataFormat().getFormat("0")); + style.setBorderBottom(CellStyle.BORDER_DOTTED); + style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + styles.put("formula_i", style); + + return styles; + } + + //define named ranges for the inputs and formulas + public static void createNames(Workbook wb){ + Name name; + + name = wb.createName(); + name.setNameName("Interest_Rate"); + name.setRefersToFormula("'Loan Calculator'!$E$5"); + + name = wb.createName(); + name.setNameName("Loan_Amount"); + name.setRefersToFormula("'Loan Calculator'!$E$4"); + + name = wb.createName(); + name.setNameName("Loan_Start"); + name.setRefersToFormula("'Loan Calculator'!$E$7"); + + name = wb.createName(); + name.setNameName("Loan_Years"); + name.setRefersToFormula("'Loan Calculator'!$E$6"); + + name = wb.createName(); + name.setNameName("Number_of_Payments"); + name.setRefersToFormula("'Loan Calculator'!$E$10"); + + name = wb.createName(); + name.setNameName("Monthly_Payment"); + name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)"); + + name = wb.createName(); + name.setNameName("Total_Cost"); + name.setRefersToFormula("'Loan Calculator'!$E$12"); + + name = wb.createName(); + name.setNameName("Total_Interest"); + name.setRefersToFormula("'Loan Calculator'!$E$11"); + + name = wb.createName(); + name.setNameName("Values_Entered"); + name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)"); + } +} diff --git a/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java b/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java index aa036f6747..8093f3c7ce 100755 --- a/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java +++ b/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java @@ -1,219 +1,220 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ -package org.apache.poi.ss.examples; - -import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import java.util.Map; -import java.util.HashMap; -import java.io.FileOutputStream; - -/** - * A weekly timesheet created using Apache POI. - * Usage: - * TimesheetDemo -xls|xlsx - * - * @author Yegor Kozlov - */ -public class TimesheetDemo { - private static final String[] titles = { - "Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", - "Total\nHrs", "Overtime\nHrs", "Regular\nHrs" - }; - - private static Object[][] sample_data = { - {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0}, - {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0}, - }; - - public static void main(String[] args) throws Exception { - Workbook wb; - - if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); - else wb = new XSSFWorkbook(); - - Map styles = createStyles(wb); - - Sheet sheet = wb.createSheet("Timesheet"); - PrintSetup printSetup = sheet.getPrintSetup(); - printSetup.setLandscape(true); - sheet.setFitToPage(true); - sheet.setHorizontallyCenter(true); - - //title row - Row titleRow = sheet.createRow(0); - titleRow.setHeightInPoints(45); - Cell titleCell = titleRow.createCell(0); - titleCell.setCellValue("Weekly Timesheet"); - titleCell.setCellStyle(styles.get("title")); - sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1")); - - //header row - Row headerRow = sheet.createRow(1); - headerRow.setHeightInPoints(40); - Cell headerCell; - for (int i = 0; i < titles.length; i++) { - headerCell = headerRow.createCell(i); - headerCell.setCellValue(titles[i]); - headerCell.setCellStyle(styles.get("header")); - } - - int rownum = 2; - for (int i = 0; i < 10; i++) { - Row row = sheet.createRow(rownum++); - for (int j = 0; j < titles.length; j++) { - Cell cell = row.createCell(j); - if(j == 9){ - //the 10th cell contains sum over week days, e.g. SUM(C3:I3) - String ref = "C" +rownum+ ":I" + rownum; - cell.setCellFormula("SUM("+ref+")"); - cell.setCellStyle(styles.get("formula")); - } else if (j == 11){ - cell.setCellFormula("J" +rownum+ "-K" + rownum); - cell.setCellStyle(styles.get("formula")); - } else { - cell.setCellStyle(styles.get("cell")); - } - } - } - - //row with totals below - Row sumRow = sheet.createRow(rownum++); - sumRow.setHeightInPoints(35); - Cell cell; - cell = sumRow.createCell(0); - cell.setCellStyle(styles.get("formula")); - cell = sumRow.createCell(1); - cell.setCellValue("Total Hrs:"); - cell.setCellStyle(styles.get("formula")); - - for (int j = 2; j < 12; j++) { - cell = sumRow.createCell(j); - String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12"; - cell.setCellFormula("SUM(" + ref + ")"); - if(j >= 9) cell.setCellStyle(styles.get("formula_2")); - else cell.setCellStyle(styles.get("formula")); - } - rownum++; - sumRow = sheet.createRow(rownum++); - sumRow.setHeightInPoints(25); - cell = sumRow.createCell(0); - cell.setCellValue("Total Regular Hours"); - cell.setCellStyle(styles.get("formula")); - cell = sumRow.createCell(1); - cell.setCellFormula("L13"); - cell.setCellStyle(styles.get("formula_2")); - sumRow = sheet.createRow(rownum++); - sumRow.setHeightInPoints(25); - cell = sumRow.createCell(0); - cell.setCellValue("Total Overtime Hours"); - cell.setCellStyle(styles.get("formula")); - cell = sumRow.createCell(1); - cell.setCellFormula("K13"); - cell.setCellStyle(styles.get("formula_2")); - - //set sample data - for (int i = 0; i < sample_data.length; i++) { - Row row = sheet.getRow(2 + i); - for (int j = 0; j < sample_data[i].length; j++) { - if(sample_data[i][j] == null) continue; - - if(sample_data[i][j] instanceof String) { - row.getCell(j).setCellValue((String)sample_data[i][j]); - } else { - row.getCell(j).setCellValue((Double)sample_data[i][j]); - } - } - } - - //finally set column widths, the width is measured in units of 1/256th of a character width - sheet.setColumnWidth(0, 30*256); //30 characters wide - for (int i = 2; i < 9; i++) { - sheet.setColumnWidth(i, 6*256); //6 characters wide - } - sheet.setColumnWidth(10, 10*256); //10 characters wide - - // Write the output to a file - String file = "timesheet.xls"; - if(wb instanceof XSSFWorkbook) file += "x"; - FileOutputStream out = new FileOutputStream(file); - wb.write(out); - out.close(); - } - - /** - * Create a library of cell styles - */ - private static Map createStyles(Workbook wb){ - Map styles = new HashMap(); - CellStyle style; - Font titleFont = wb.createFont(); - titleFont.setFontHeightInPoints((short)18); - titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFont(titleFont); - styles.put("title", style); - - Font monthFont = wb.createFont(); - monthFont.setFontHeightInPoints((short)11); - monthFont.setColor(IndexedColors.WHITE.getIndex()); - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setFont(monthFont); - style.setWrapText(true); - styles.put("header", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setWrapText(true); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderTop(CellStyle.BORDER_THIN); - style.setTopBorderColor(IndexedColors.BLACK.getIndex()); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); - styles.put("cell", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setDataFormat(wb.createDataFormat().getFormat("0.00")); - styles.put("formula", style); - - style = wb.createCellStyle(); - style.setAlignment(CellStyle.ALIGN_CENTER); - style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); - style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex()); - style.setFillPattern(CellStyle.SOLID_FOREGROUND); - style.setDataFormat(wb.createDataFormat().getFormat("0.00")); - styles.put("formula_2", style); - - return styles; - } -} +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.examples; + +import org.apache.poi.xssf.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import java.util.Map; +import java.util.HashMap; +import java.io.FileOutputStream; + +/** + * A weekly timesheet created using Apache POI. + * Usage: + * TimesheetDemo -xls|xlsx + * + * @author Yegor Kozlov + */ +public class TimesheetDemo { + private static final String[] titles = { + "Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", + "Total\nHrs", "Overtime\nHrs", "Regular\nHrs" + }; + + private static Object[][] sample_data = { + {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0}, + {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0}, + }; + + public static void main(String[] args) throws Exception { + Workbook wb; + + if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook(); + else wb = new XSSFWorkbook(); + + Map styles = createStyles(wb); + + Sheet sheet = wb.createSheet("Timesheet"); + PrintSetup printSetup = sheet.getPrintSetup(); + printSetup.setLandscape(true); + sheet.setFitToPage(true); + sheet.setHorizontallyCenter(true); + + //title row + Row titleRow = sheet.createRow(0); + titleRow.setHeightInPoints(45); + Cell titleCell = titleRow.createCell(0); + titleCell.setCellValue("Weekly Timesheet"); + titleCell.setCellStyle(styles.get("title")); + sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1")); + + //header row + Row headerRow = sheet.createRow(1); + headerRow.setHeightInPoints(40); + Cell headerCell; + for (int i = 0; i < titles.length; i++) { + headerCell = headerRow.createCell(i); + headerCell.setCellValue(titles[i]); + headerCell.setCellStyle(styles.get("header")); + } + + int rownum = 2; + for (int i = 0; i < 10; i++) { + Row row = sheet.createRow(rownum++); + for (int j = 0; j < titles.length; j++) { + Cell cell = row.createCell(j); + if(j == 9){ + //the 10th cell contains sum over week days, e.g. SUM(C3:I3) + String ref = "C" +rownum+ ":I" + rownum; + cell.setCellFormula("SUM("+ref+")"); + cell.setCellStyle(styles.get("formula")); + } else if (j == 11){ + cell.setCellFormula("J" +rownum+ "-K" + rownum); + cell.setCellStyle(styles.get("formula")); + } else { + cell.setCellStyle(styles.get("cell")); + } + } + } + + //row with totals below + Row sumRow = sheet.createRow(rownum++); + sumRow.setHeightInPoints(35); + Cell cell; + cell = sumRow.createCell(0); + cell.setCellStyle(styles.get("formula")); + cell = sumRow.createCell(1); + cell.setCellValue("Total Hrs:"); + cell.setCellStyle(styles.get("formula")); + + for (int j = 2; j < 12; j++) { + cell = sumRow.createCell(j); + String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12"; + cell.setCellFormula("SUM(" + ref + ")"); + if(j >= 9) cell.setCellStyle(styles.get("formula_2")); + else cell.setCellStyle(styles.get("formula")); + } + rownum++; + sumRow = sheet.createRow(rownum++); + sumRow.setHeightInPoints(25); + cell = sumRow.createCell(0); + cell.setCellValue("Total Regular Hours"); + cell.setCellStyle(styles.get("formula")); + cell = sumRow.createCell(1); + cell.setCellFormula("L13"); + cell.setCellStyle(styles.get("formula_2")); + sumRow = sheet.createRow(rownum++); + sumRow.setHeightInPoints(25); + cell = sumRow.createCell(0); + cell.setCellValue("Total Overtime Hours"); + cell.setCellStyle(styles.get("formula")); + cell = sumRow.createCell(1); + cell.setCellFormula("K13"); + cell.setCellStyle(styles.get("formula_2")); + + //set sample data + for (int i = 0; i < sample_data.length; i++) { + Row row = sheet.getRow(2 + i); + for (int j = 0; j < sample_data[i].length; j++) { + if(sample_data[i][j] == null) continue; + + if(sample_data[i][j] instanceof String) { + row.getCell(j).setCellValue((String)sample_data[i][j]); + } else { + row.getCell(j).setCellValue((Double)sample_data[i][j]); + } + } + } + + //finally set column widths, the width is measured in units of 1/256th of a character width + sheet.setColumnWidth(0, 30*256); //30 characters wide + for (int i = 2; i < 9; i++) { + sheet.setColumnWidth(i, 6*256); //6 characters wide + } + sheet.setColumnWidth(10, 10*256); //10 characters wide + + // Write the output to a file + String file = "timesheet.xls"; + if(wb instanceof XSSFWorkbook) file += "x"; + FileOutputStream out = new FileOutputStream(file); + wb.write(out); + out.close(); + } + + /** + * Create a library of cell styles + */ + private static Map createStyles(Workbook wb){ + Map styles = new HashMap(); + CellStyle style; + Font titleFont = wb.createFont(); + titleFont.setFontHeightInPoints((short)18); + titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFont(titleFont); + styles.put("title", style); + + Font monthFont = wb.createFont(); + monthFont.setFontHeightInPoints((short)11); + monthFont.setColor(IndexedColors.WHITE.getIndex()); + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setFont(monthFont); + style.setWrapText(true); + styles.put("header", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setWrapText(true); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setRightBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderTop(CellStyle.BORDER_THIN); + style.setTopBorderColor(IndexedColors.BLACK.getIndex()); + style.setBorderBottom(CellStyle.BORDER_THIN); + style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); + styles.put("cell", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setDataFormat(wb.createDataFormat().getFormat("0.00")); + styles.put("formula", style); + + style = wb.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex()); + style.setFillPattern(CellStyle.SOLID_FOREGROUND); + style.setDataFormat(wb.createDataFormat().getFormat("0.00")); + styles.put("formula_2", style); + + return styles; + } +} diff --git a/src/java/org/apache/poi/ss/formula/package.html b/src/java/org/apache/poi/ss/formula/package.html index 1af2f84ac7..3296708d5c 100644 --- a/src/java/org/apache/poi/ss/formula/package.html +++ b/src/java/org/apache/poi/ss/formula/package.html @@ -1,29 +1,29 @@ - - - - - - - -This package contains common internal POI code for manipulating formulas. -Client applications should not refer to these classes directly. - - - + + + + + + + +This package contains common internal POI code for manipulating formulas. +Client applications should not refer to these classes directly. + + + diff --git a/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata-asGenerated.txt b/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata-asGenerated.txt index 8a85f42841..b56f65e238 100644 --- a/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata-asGenerated.txt +++ b/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata-asGenerated.txt @@ -1,285 +1,285 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor) -# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4) -# -#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote ) - -# Built-In Sheet Functions in BIFF2 -0 COUNT 0 30 V R -1 IF 2 3 R V R R -2 ISNA 1 1 V V -3 ISERROR 1 1 V V -4 SUM 0 30 V R -5 AVERAGE 1 30 V R -6 MIN 1 30 V R -7 MAX 1 30 V R -8 ROW 0 1 V R -9 COLUMN 0 1 V R -10 NA 0 0 V - -11 NPV 2 30 V V R -12 STDEV 1 30 V R -13 DOLLAR 1 2 V V V -14 FIXED 2 2 V V V x -15 SIN 1 1 V V -16 COS 1 1 V V -17 TAN 1 1 V V -18 ATAN 1 1 V V -19 PI 0 0 V - -20 SQRT 1 1 V V -21 EXP 1 1 V V -22 LN 1 1 V V -23 LOG10 1 1 V V -24 ABS 1 1 V V -25 INT 1 1 V V -26 SIGN 1 1 V V -27 ROUND 2 2 V V V -28 LOOKUP 2 3 V V R R -29 INDEX 2 4 R R V V V -30 REPT 2 2 V V V -31 MID 3 3 V V V V -32 LEN 1 1 V V -33 VALUE 1 1 V V -34 TRUE 0 0 V - -35 FALSE 0 0 V - -36 AND 1 30 V R -37 OR 1 30 V R -38 NOT 1 1 V V -39 MOD 2 2 V V V -40 DCOUNT 3 3 V R R R -41 DSUM 3 3 V R R R -42 DAVERAGE 3 3 V R R R -43 DMIN 3 3 V R R R -44 DMAX 3 3 V R R R -45 DSTDEV 3 3 V R R R -46 VAR 1 30 V R -47 DVAR 3 3 V R R R -48 TEXT 2 2 V V V -49 LINEST 1 2 A R R x -50 TREND 1 3 A R R R x -51 LOGEST 1 2 A R R x -52 GROWTH 1 3 A R R R x -56 PV 3 5 V V V V V V -# Built-In Sheet Functions in BIFF2 -57 FV 3 5 V V V V V V -58 NPER 3 5 V V V V V V -59 PMT 3 5 V V V V V V -60 RATE 3 6 V V V V V V V -61 MIRR 3 3 V R V V -62 IRR 1 2 V R V -63 RAND 0 0 V - x -64 MATCH 2 3 V V R R -65 DATE 3 3 V V V V -66 TIME 3 3 V V V V -67 DAY 1 1 V V -68 MONTH 1 1 V V -69 YEAR 1 1 V V -70 WEEKDAY 1 1 V V x -71 HOUR 1 1 V V -72 MINUTE 1 1 V V -73 SECOND 1 1 V V -74 NOW 0 0 V - x -75 AREAS 1 1 V R -76 ROWS 1 1 V R -77 COLUMNS 1 1 V R -78 OFFSET 3 5 R R V V V V x -82 SEARCH 2 3 V V V V -83 TRANSPOSE 1 1 A A -86 TYPE 1 1 V V -97 ATAN2 2 2 V V V -98 ASIN 1 1 V V -99 ACOS 1 1 V V -100 CHOOSE 2 30 R V R -101 HLOOKUP 3 3 V V R R x -102 VLOOKUP 3 3 V V R R x -105 ISREF 1 1 V R -109 LOG 1 2 V V V -111 CHAR 1 1 V V -112 LOWER 1 1 V V -113 UPPER 1 1 V V -114 PROPER 1 1 V V -115 LEFT 1 2 V V V -116 RIGHT 1 2 V V V -117 EXACT 2 2 V V V -118 TRIM 1 1 V V -119 REPLACE 4 4 V V V V V -120 SUBSTITUTE 3 4 V V V V V -121 CODE 1 1 V V -124 FIND 2 3 V V V V -125 CELL 1 2 V V R x -126 ISERR 1 1 V V -127 ISTEXT 1 1 V V -128 ISNUMBER 1 1 V V -129 ISBLANK 1 1 V V -130 T 1 1 V R -131 N 1 1 V R -140 DATEVALUE 1 1 V V -141 TIMEVALUE 1 1 V V -142 SLN 3 3 V V V V -143 SYD 4 4 V V V V V -144 DDB 4 5 V V V V V V -148 INDIRECT 1 2 R V V x -162 CLEAN 1 1 V V -163 MDETERM 1 1 V A -164 MINVERSE 1 1 A A -165 MMULT 2 2 A A A -167 IPMT 4 6 V V V V V V V -168 PPMT 4 6 V V V V V V V -169 COUNTA 0 30 V R -183 PRODUCT 0 30 V R -184 FACT 1 1 V V -189 DPRODUCT 3 3 V R R R -190 ISNONTEXT 1 1 V V -193 STDEVP 1 30 V R -194 VARP 1 30 V R -195 DSTDEVP 3 3 V R R R -196 DVARP 3 3 V R R R -197 TRUNC 1 1 V V x -198 ISLOGICAL 1 1 V V -199 DCOUNTA 3 3 V R R R -# New Built-In Sheet Functions in BIFF3 -49 LINEST 1 4 A R R V V x -50 TREND 1 4 A R R R V x -51 LOGEST 1 4 A R R V V x -52 GROWTH 1 4 A R R R V x -197 TRUNC 1 2 V V V x -204 YEN 1 2 V V V x -205 FINDB 2 3 V V V V -206 SEARCHB 2 3 V V V V -207 REPLACEB 4 4 V V V V V -208 LEFTB 1 2 V V V -209 RIGHTB 1 2 V V V -210 MIDB 3 3 V V V V -211 LENB 1 1 V V -212 ROUNDUP 2 2 V V V -213 ROUNDDOWN 2 2 V V V -214 ASC 1 1 V V -215 JIS 1 1 V V x -219 ADDRESS 2 5 V V V V V V -220 DAYS360 2 2 V V V x -221 TODAY 0 0 V - x -222 VDB 5 7 V V V V V V V V -227 MEDIAN 1 30 V R ... -228 SUMPRODUCT 1 30 V A ... -229 SINH 1 1 V V -230 COSH 1 1 V V -231 TANH 1 1 V V -232 ASINH 1 1 V V -233 ACOSH 1 1 V V -234 ATANH 1 1 V V -235 DGET 3 3 V R R R -244 INFO 1 1 V V -# New Built-In Sheet Functions in BIFF4 -14 FIXED 2 3 V V V V x -204 USDOLLAR 1 2 V V V x -215 DBCS 1 1 V V x -216 RANK 2 3 V V R V -247 DB 4 5 V V V V V V -252 FREQUENCY 2 2 A R R -261 ERROR.TYPE 1 1 V V -269 AVEDEV 1 30 V R ... -270 BETADIST 3 5 V V V V V V -271 GAMMALN 1 1 V V -272 BETAINV 3 5 V V V V V V -273 BINOMDIST 4 4 V V V V V -274 CHIDIST 2 2 V V V -275 CHIINV 2 2 V V V -276 COMBIN 2 2 V V V -277 CONFIDENCE 3 3 V V V V -278 CRITBINOM 3 3 V V V V -279 EVEN 1 1 V V -280 EXPONDIST 3 3 V V V V -281 FDIST 3 3 V V V V -282 FINV 3 3 V V V V -283 FISHER 1 1 V V -284 FISHERINV 1 1 V V -285 FLOOR 2 2 V V V -286 GAMMADIST 4 4 V V V V V -287 GAMMAINV 3 3 V V V V -288 CEILING 2 2 V V V -289 HYPGEOMDIST 4 4 V V V V V -290 LOGNORMDIST 3 3 V V V V -291 LOGINV 3 3 V V V V -292 NEGBINOMDIST 3 3 V V V V -293 NORMDIST 4 4 V V V V V -294 NORMSDIST 1 1 V V -295 NORMINV 3 3 V V V V -296 NORMSINV 1 1 V V -297 STANDARDIZE 3 3 V V V V -298 ODD 1 1 V V -299 PERMUT 2 2 V V V -300 POISSON 3 3 V V V V -301 TDIST 3 3 V V V V -302 WEIBULL 4 4 V V V V V -303 SUMXMY2 2 2 V A A -304 SUMX2MY2 2 2 V A A -305 SUMX2PY2 2 2 V A A -306 CHITEST 2 2 V A A -307 CORREL 2 2 V A A -308 COVAR 2 2 V A A -309 FORECAST 3 3 V V A A -310 FTEST 2 2 V A A -311 INTERCEPT 2 2 V A A -312 PEARSON 2 2 V A A -313 RSQ 2 2 V A A -314 STEYX 2 2 V A A -315 SLOPE 2 2 V A A -316 TTEST 4 4 V A A V V -317 PROB 3 4 V A A V V -318 DEVSQ 1 30 V R ... -319 GEOMEAN 1 30 V R ... -320 HARMEAN 1 30 V R ... -321 SUMSQ 0 30 V R ... -322 KURT 1 30 V R ... -323 SKEW 1 30 V R ... -324 ZTEST 2 3 V R V V -325 LARGE 2 2 V R V -326 SMALL 2 2 V R V -327 QUARTILE 2 2 V R V -328 PERCENTILE 2 2 V R V -329 PERCENTRANK 2 3 V R V V -330 MODE 1 30 V A -331 TRIMMEAN 2 2 V R V -332 TINV 2 2 V V V -# New Built-In Sheet Functions in BIFF5 -70 WEEKDAY 1 2 V V V x -101 HLOOKUP 3 4 V V R R V x -102 VLOOKUP 3 4 V V R R V x -220 DAYS360 2 3 V V V V x -336 CONCATENATE 0 30 V V -337 POWER 2 2 V V V -342 RADIANS 1 1 V V -343 DEGREES 1 1 V V -344 SUBTOTAL 2 30 V V R -345 SUMIF 2 3 V R V R -346 COUNTIF 2 2 V R V -347 COUNTBLANK 1 1 V R -350 ISPMT 4 4 V V V V V -351 DATEDIF 3 3 V V V V -352 DATESTRING 1 1 V V -353 NUMBERSTRING 2 2 V V V -354 ROMAN 1 2 V V V -# New Built-In Sheet Functions in BIFF8 -358 GETPIVOTDATA 2 30 -359 HYPERLINK 1 2 V V V -360 PHONETIC 1 1 V R -361 AVERAGEA 1 30 V R ... -362 MAXA 1 30 V R ... -363 MINA 1 30 V R ... -364 STDEVPA 1 30 V R ... -365 VARPA 1 30 V R ... -366 STDEVA 1 30 V R ... -367 VARA 1 30 V R ... +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor) +# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4) +# +#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote ) + +# Built-In Sheet Functions in BIFF2 +0 COUNT 0 30 V R +1 IF 2 3 R V R R +2 ISNA 1 1 V V +3 ISERROR 1 1 V V +4 SUM 0 30 V R +5 AVERAGE 1 30 V R +6 MIN 1 30 V R +7 MAX 1 30 V R +8 ROW 0 1 V R +9 COLUMN 0 1 V R +10 NA 0 0 V - +11 NPV 2 30 V V R +12 STDEV 1 30 V R +13 DOLLAR 1 2 V V V +14 FIXED 2 2 V V V x +15 SIN 1 1 V V +16 COS 1 1 V V +17 TAN 1 1 V V +18 ATAN 1 1 V V +19 PI 0 0 V - +20 SQRT 1 1 V V +21 EXP 1 1 V V +22 LN 1 1 V V +23 LOG10 1 1 V V +24 ABS 1 1 V V +25 INT 1 1 V V +26 SIGN 1 1 V V +27 ROUND 2 2 V V V +28 LOOKUP 2 3 V V R R +29 INDEX 2 4 R R V V V +30 REPT 2 2 V V V +31 MID 3 3 V V V V +32 LEN 1 1 V V +33 VALUE 1 1 V V +34 TRUE 0 0 V - +35 FALSE 0 0 V - +36 AND 1 30 V R +37 OR 1 30 V R +38 NOT 1 1 V V +39 MOD 2 2 V V V +40 DCOUNT 3 3 V R R R +41 DSUM 3 3 V R R R +42 DAVERAGE 3 3 V R R R +43 DMIN 3 3 V R R R +44 DMAX 3 3 V R R R +45 DSTDEV 3 3 V R R R +46 VAR 1 30 V R +47 DVAR 3 3 V R R R +48 TEXT 2 2 V V V +49 LINEST 1 2 A R R x +50 TREND 1 3 A R R R x +51 LOGEST 1 2 A R R x +52 GROWTH 1 3 A R R R x +56 PV 3 5 V V V V V V +# Built-In Sheet Functions in BIFF2 +57 FV 3 5 V V V V V V +58 NPER 3 5 V V V V V V +59 PMT 3 5 V V V V V V +60 RATE 3 6 V V V V V V V +61 MIRR 3 3 V R V V +62 IRR 1 2 V R V +63 RAND 0 0 V - x +64 MATCH 2 3 V V R R +65 DATE 3 3 V V V V +66 TIME 3 3 V V V V +67 DAY 1 1 V V +68 MONTH 1 1 V V +69 YEAR 1 1 V V +70 WEEKDAY 1 1 V V x +71 HOUR 1 1 V V +72 MINUTE 1 1 V V +73 SECOND 1 1 V V +74 NOW 0 0 V - x +75 AREAS 1 1 V R +76 ROWS 1 1 V R +77 COLUMNS 1 1 V R +78 OFFSET 3 5 R R V V V V x +82 SEARCH 2 3 V V V V +83 TRANSPOSE 1 1 A A +86 TYPE 1 1 V V +97 ATAN2 2 2 V V V +98 ASIN 1 1 V V +99 ACOS 1 1 V V +100 CHOOSE 2 30 R V R +101 HLOOKUP 3 3 V V R R x +102 VLOOKUP 3 3 V V R R x +105 ISREF 1 1 V R +109 LOG 1 2 V V V +111 CHAR 1 1 V V +112 LOWER 1 1 V V +113 UPPER 1 1 V V +114 PROPER 1 1 V V +115 LEFT 1 2 V V V +116 RIGHT 1 2 V V V +117 EXACT 2 2 V V V +118 TRIM 1 1 V V +119 REPLACE 4 4 V V V V V +120 SUBSTITUTE 3 4 V V V V V +121 CODE 1 1 V V +124 FIND 2 3 V V V V +125 CELL 1 2 V V R x +126 ISERR 1 1 V V +127 ISTEXT 1 1 V V +128 ISNUMBER 1 1 V V +129 ISBLANK 1 1 V V +130 T 1 1 V R +131 N 1 1 V R +140 DATEVALUE 1 1 V V +141 TIMEVALUE 1 1 V V +142 SLN 3 3 V V V V +143 SYD 4 4 V V V V V +144 DDB 4 5 V V V V V V +148 INDIRECT 1 2 R V V x +162 CLEAN 1 1 V V +163 MDETERM 1 1 V A +164 MINVERSE 1 1 A A +165 MMULT 2 2 A A A +167 IPMT 4 6 V V V V V V V +168 PPMT 4 6 V V V V V V V +169 COUNTA 0 30 V R +183 PRODUCT 0 30 V R +184 FACT 1 1 V V +189 DPRODUCT 3 3 V R R R +190 ISNONTEXT 1 1 V V +193 STDEVP 1 30 V R +194 VARP 1 30 V R +195 DSTDEVP 3 3 V R R R +196 DVARP 3 3 V R R R +197 TRUNC 1 1 V V x +198 ISLOGICAL 1 1 V V +199 DCOUNTA 3 3 V R R R +# New Built-In Sheet Functions in BIFF3 +49 LINEST 1 4 A R R V V x +50 TREND 1 4 A R R R V x +51 LOGEST 1 4 A R R V V x +52 GROWTH 1 4 A R R R V x +197 TRUNC 1 2 V V V x +204 YEN 1 2 V V V x +205 FINDB 2 3 V V V V +206 SEARCHB 2 3 V V V V +207 REPLACEB 4 4 V V V V V +208 LEFTB 1 2 V V V +209 RIGHTB 1 2 V V V +210 MIDB 3 3 V V V V +211 LENB 1 1 V V +212 ROUNDUP 2 2 V V V +213 ROUNDDOWN 2 2 V V V +214 ASC 1 1 V V +215 JIS 1 1 V V x +219 ADDRESS 2 5 V V V V V V +220 DAYS360 2 2 V V V x +221 TODAY 0 0 V - x +222 VDB 5 7 V V V V V V V V +227 MEDIAN 1 30 V R ... +228 SUMPRODUCT 1 30 V A ... +229 SINH 1 1 V V +230 COSH 1 1 V V +231 TANH 1 1 V V +232 ASINH 1 1 V V +233 ACOSH 1 1 V V +234 ATANH 1 1 V V +235 DGET 3 3 V R R R +244 INFO 1 1 V V +# New Built-In Sheet Functions in BIFF4 +14 FIXED 2 3 V V V V x +204 USDOLLAR 1 2 V V V x +215 DBCS 1 1 V V x +216 RANK 2 3 V V R V +247 DB 4 5 V V V V V V +252 FREQUENCY 2 2 A R R +261 ERROR.TYPE 1 1 V V +269 AVEDEV 1 30 V R ... +270 BETADIST 3 5 V V V V V V +271 GAMMALN 1 1 V V +272 BETAINV 3 5 V V V V V V +273 BINOMDIST 4 4 V V V V V +274 CHIDIST 2 2 V V V +275 CHIINV 2 2 V V V +276 COMBIN 2 2 V V V +277 CONFIDENCE 3 3 V V V V +278 CRITBINOM 3 3 V V V V +279 EVEN 1 1 V V +280 EXPONDIST 3 3 V V V V +281 FDIST 3 3 V V V V +282 FINV 3 3 V V V V +283 FISHER 1 1 V V +284 FISHERINV 1 1 V V +285 FLOOR 2 2 V V V +286 GAMMADIST 4 4 V V V V V +287 GAMMAINV 3 3 V V V V +288 CEILING 2 2 V V V +289 HYPGEOMDIST 4 4 V V V V V +290 LOGNORMDIST 3 3 V V V V +291 LOGINV 3 3 V V V V +292 NEGBINOMDIST 3 3 V V V V +293 NORMDIST 4 4 V V V V V +294 NORMSDIST 1 1 V V +295 NORMINV 3 3 V V V V +296 NORMSINV 1 1 V V +297 STANDARDIZE 3 3 V V V V +298 ODD 1 1 V V +299 PERMUT 2 2 V V V +300 POISSON 3 3 V V V V +301 TDIST 3 3 V V V V +302 WEIBULL 4 4 V V V V V +303 SUMXMY2 2 2 V A A +304 SUMX2MY2 2 2 V A A +305 SUMX2PY2 2 2 V A A +306 CHITEST 2 2 V A A +307 CORREL 2 2 V A A +308 COVAR 2 2 V A A +309 FORECAST 3 3 V V A A +310 FTEST 2 2 V A A +311 INTERCEPT 2 2 V A A +312 PEARSON 2 2 V A A +313 RSQ 2 2 V A A +314 STEYX 2 2 V A A +315 SLOPE 2 2 V A A +316 TTEST 4 4 V A A V V +317 PROB 3 4 V A A V V +318 DEVSQ 1 30 V R ... +319 GEOMEAN 1 30 V R ... +320 HARMEAN 1 30 V R ... +321 SUMSQ 0 30 V R ... +322 KURT 1 30 V R ... +323 SKEW 1 30 V R ... +324 ZTEST 2 3 V R V V +325 LARGE 2 2 V R V +326 SMALL 2 2 V R V +327 QUARTILE 2 2 V R V +328 PERCENTILE 2 2 V R V +329 PERCENTRANK 2 3 V R V V +330 MODE 1 30 V A +331 TRIMMEAN 2 2 V R V +332 TINV 2 2 V V V +# New Built-In Sheet Functions in BIFF5 +70 WEEKDAY 1 2 V V V x +101 HLOOKUP 3 4 V V R R V x +102 VLOOKUP 3 4 V V R R V x +220 DAYS360 2 3 V V V V x +336 CONCATENATE 0 30 V V +337 POWER 2 2 V V V +342 RADIANS 1 1 V V +343 DEGREES 1 1 V V +344 SUBTOTAL 2 30 V V R +345 SUMIF 2 3 V R V R +346 COUNTIF 2 2 V R V +347 COUNTBLANK 1 1 V R +350 ISPMT 4 4 V V V V V +351 DATEDIF 3 3 V V V V +352 DATESTRING 1 1 V V +353 NUMBERSTRING 2 2 V V V +354 ROMAN 1 2 V V V +# New Built-In Sheet Functions in BIFF8 +358 GETPIVOTDATA 2 30 +359 HYPERLINK 1 2 V V V +360 PHONETIC 1 1 V R +361 AVERAGEA 1 30 V R ... +362 MAXA 1 30 V R ... +363 MINA 1 30 V R ... +364 STDEVPA 1 30 V R ... +365 VARPA 1 30 V R ... +366 STDEVA 1 30 V R ... +367 VARA 1 30 V R ... diff --git a/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata.txt b/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata.txt index 31694d5d76..277d229a82 100644 --- a/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata.txt +++ b/src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata.txt @@ -1,286 +1,286 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor) -# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4) -# ! + some manual edits ! -# -#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote ) - -# Built-In Sheet Functions in BIFF2 -0 COUNT 0 30 V R -1 IF 2 3 R V R R -2 ISNA 1 1 V V -3 ISERROR 1 1 V V -4 SUM 0 30 V R -5 AVERAGE 1 30 V R -6 MIN 1 30 V R -7 MAX 1 30 V R -8 ROW 0 1 V R -9 COLUMN 0 1 V R -10 NA 0 0 V - -11 NPV 2 30 V V R -12 STDEV 1 30 V R -13 DOLLAR 1 2 V V V -14 FIXED 2 2 V V V x -15 SIN 1 1 V V -16 COS 1 1 V V -17 TAN 1 1 V V -18 ATAN 1 1 V V -19 PI 0 0 V - -20 SQRT 1 1 V V -21 EXP 1 1 V V -22 LN 1 1 V V -23 LOG10 1 1 V V -24 ABS 1 1 V V -25 INT 1 1 V V -26 SIGN 1 1 V V -27 ROUND 2 2 V V V -28 LOOKUP 2 3 V V R R -29 INDEX 2 4 R R V V V -30 REPT 2 2 V V V -31 MID 3 3 V V V V -32 LEN 1 1 V V -33 VALUE 1 1 V V -34 TRUE 0 0 V - -35 FALSE 0 0 V - -36 AND 1 30 V R -37 OR 1 30 V R -38 NOT 1 1 V V -39 MOD 2 2 V V V -40 DCOUNT 3 3 V R R R -41 DSUM 3 3 V R R R -42 DAVERAGE 3 3 V R R R -43 DMIN 3 3 V R R R -44 DMAX 3 3 V R R R -45 DSTDEV 3 3 V R R R -46 VAR 1 30 V R -47 DVAR 3 3 V R R R -48 TEXT 2 2 V V V -49 LINEST 1 2 A R R x -50 TREND 1 3 A R R R x -51 LOGEST 1 2 A R R x -52 GROWTH 1 3 A R R R x -56 PV 3 5 V V V V V V -# Built-In Sheet Functions in BIFF2 -57 FV 3 5 V V V V V V -58 NPER 3 5 V V V V V V -59 PMT 3 5 V V V V V V -60 RATE 3 6 V V V V V V V -61 MIRR 3 3 V A V V -62 IRR 1 2 V A V -63 RAND 0 0 V - x -64 MATCH 2 3 V V R R -65 DATE 3 3 V V V V -66 TIME 3 3 V V V V -67 DAY 1 1 V V -68 MONTH 1 1 V V -69 YEAR 1 1 V V -70 WEEKDAY 1 1 V V x -71 HOUR 1 1 V V -72 MINUTE 1 1 V V -73 SECOND 1 1 V V -74 NOW 0 0 V - x -75 AREAS 1 1 V R -76 ROWS 1 1 V A -77 COLUMNS 1 1 V A -78 OFFSET 3 5 R R V V V V x -82 SEARCH 2 3 V V V V -83 TRANSPOSE 1 1 A A -86 TYPE 1 1 V V -97 ATAN2 2 2 V V V -98 ASIN 1 1 V V -99 ACOS 1 1 V V -100 CHOOSE 2 30 R V R -101 HLOOKUP 3 3 V V R R x -102 VLOOKUP 3 3 V V R R x -105 ISREF 1 1 V R -109 LOG 1 2 V V V -111 CHAR 1 1 V V -112 LOWER 1 1 V V -113 UPPER 1 1 V V -114 PROPER 1 1 V V -115 LEFT 1 2 V V V -116 RIGHT 1 2 V V V -117 EXACT 2 2 V V V -118 TRIM 1 1 V V -119 REPLACE 4 4 V V V V V -120 SUBSTITUTE 3 4 V V V V V -121 CODE 1 1 V V -124 FIND 2 3 V V V V -125 CELL 1 2 V V R x -126 ISERR 1 1 V V -127 ISTEXT 1 1 V V -128 ISNUMBER 1 1 V V -129 ISBLANK 1 1 V V -130 T 1 1 V R -131 N 1 1 V R -140 DATEVALUE 1 1 V V -141 TIMEVALUE 1 1 V V -142 SLN 3 3 V V V V -143 SYD 4 4 V V V V V -144 DDB 4 5 V V V V V V -148 INDIRECT 1 2 R V V x -162 CLEAN 1 1 V V -163 MDETERM 1 1 V A -164 MINVERSE 1 1 A A -165 MMULT 2 2 A A A -167 IPMT 4 6 V V V V V V V -168 PPMT 4 6 V V V V V V V -169 COUNTA 0 30 V R -183 PRODUCT 0 30 V R -184 FACT 1 1 V V -189 DPRODUCT 3 3 V R R R -190 ISNONTEXT 1 1 V V -193 STDEVP 1 30 V R -194 VARP 1 30 V R -195 DSTDEVP 3 3 V R R R -196 DVARP 3 3 V R R R -197 TRUNC 1 1 V V x -198 ISLOGICAL 1 1 V V -199 DCOUNTA 3 3 V R R R -# New Built-In Sheet Functions in BIFF3 -49 LINEST 1 4 A R R V V x -50 TREND 1 4 A R R R V x -51 LOGEST 1 4 A R R V V x -52 GROWTH 1 4 A R R R V x -197 TRUNC 1 2 V V V x -204 YEN 1 2 V V V x -205 FINDB 2 3 V V V V -206 SEARCHB 2 3 V V V V -207 REPLACEB 4 4 V V V V V -208 LEFTB 1 2 V V V -209 RIGHTB 1 2 V V V -210 MIDB 3 3 V V V V -211 LENB 1 1 V V -212 ROUNDUP 2 2 V V V -213 ROUNDDOWN 2 2 V V V -214 ASC 1 1 V V -215 JIS 1 1 V V x -219 ADDRESS 2 5 V V V V V V -220 DAYS360 2 2 V V V x -221 TODAY 0 0 V - x -222 VDB 5 7 V V V V V V V V -227 MEDIAN 1 30 V R ... -228 SUMPRODUCT 1 30 V A ... -229 SINH 1 1 V V -230 COSH 1 1 V V -231 TANH 1 1 V V -232 ASINH 1 1 V V -233 ACOSH 1 1 V V -234 ATANH 1 1 V V -235 DGET 3 3 V R R R -244 INFO 1 1 V V -# New Built-In Sheet Functions in BIFF4 -14 FIXED 2 3 V V V V x -204 USDOLLAR 1 2 V V V x -215 DBCS 1 1 V V x -216 RANK 2 3 V V R V -247 DB 4 5 V V V V V V -252 FREQUENCY 2 2 A R R -261 ERROR.TYPE 1 1 V V -269 AVEDEV 1 30 V R ... -270 BETADIST 3 5 V V V V V V -271 GAMMALN 1 1 V V -272 BETAINV 3 5 V V V V V V -273 BINOMDIST 4 4 V V V V V -274 CHIDIST 2 2 V V V -275 CHIINV 2 2 V V V -276 COMBIN 2 2 V V V -277 CONFIDENCE 3 3 V V V V -278 CRITBINOM 3 3 V V V V -279 EVEN 1 1 V V -280 EXPONDIST 3 3 V V V V -281 FDIST 3 3 V V V V -282 FINV 3 3 V V V V -283 FISHER 1 1 V V -284 FISHERINV 1 1 V V -285 FLOOR 2 2 V V V -286 GAMMADIST 4 4 V V V V V -287 GAMMAINV 3 3 V V V V -288 CEILING 2 2 V V V -289 HYPGEOMDIST 4 4 V V V V V -290 LOGNORMDIST 3 3 V V V V -291 LOGINV 3 3 V V V V -292 NEGBINOMDIST 3 3 V V V V -293 NORMDIST 4 4 V V V V V -294 NORMSDIST 1 1 V V -295 NORMINV 3 3 V V V V -296 NORMSINV 1 1 V V -297 STANDARDIZE 3 3 V V V V -298 ODD 1 1 V V -299 PERMUT 2 2 V V V -300 POISSON 3 3 V V V V -301 TDIST 3 3 V V V V -302 WEIBULL 4 4 V V V V V -303 SUMXMY2 2 2 V A A -304 SUMX2MY2 2 2 V A A -305 SUMX2PY2 2 2 V A A -306 CHITEST 2 2 V A A -307 CORREL 2 2 V A A -308 COVAR 2 2 V A A -309 FORECAST 3 3 V V A A -310 FTEST 2 2 V A A -311 INTERCEPT 2 2 V A A -312 PEARSON 2 2 V A A -313 RSQ 2 2 V A A -314 STEYX 2 2 V A A -315 SLOPE 2 2 V A A -316 TTEST 4 4 V A A V V -317 PROB 3 4 V A A V V -318 DEVSQ 1 30 V R ... -319 GEOMEAN 1 30 V R ... -320 HARMEAN 1 30 V R ... -321 SUMSQ 0 30 V R ... -322 KURT 1 30 V R ... -323 SKEW 1 30 V R ... -324 ZTEST 2 3 V R V V -325 LARGE 2 2 V R V -326 SMALL 2 2 V R V -327 QUARTILE 2 2 V R V -328 PERCENTILE 2 2 V R V -329 PERCENTRANK 2 3 V R V V -330 MODE 1 30 V A -331 TRIMMEAN 2 2 V R V -332 TINV 2 2 V V V -# New Built-In Sheet Functions in BIFF5 -70 WEEKDAY 1 2 V V V x -101 HLOOKUP 3 4 V V R R V x -102 VLOOKUP 3 4 V V R R V x -220 DAYS360 2 3 V V V V x -336 CONCATENATE 0 30 V V -337 POWER 2 2 V V V -342 RADIANS 1 1 V V -343 DEGREES 1 1 V V -344 SUBTOTAL 2 30 V V R -345 SUMIF 2 3 V R V R -346 COUNTIF 2 2 V R V -347 COUNTBLANK 1 1 V R -350 ISPMT 4 4 V V V V V -351 DATEDIF 3 3 V V V V -352 DATESTRING 1 1 V V -353 NUMBERSTRING 2 2 V V V -354 ROMAN 1 2 V V V -# New Built-In Sheet Functions in BIFF8 -358 GETPIVOTDATA 2 30 -359 HYPERLINK 1 2 V V V -360 PHONETIC 1 1 V R -361 AVERAGEA 1 30 V R ... -362 MAXA 1 30 V R ... -363 MINA 1 30 V R ... -364 STDEVPA 1 30 V R ... -365 VARPA 1 30 V R ... -366 STDEVA 1 30 V R ... -367 VARA 1 30 V R ... +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor) +# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4) +# ! + some manual edits ! +# +#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote ) + +# Built-In Sheet Functions in BIFF2 +0 COUNT 0 30 V R +1 IF 2 3 R V R R +2 ISNA 1 1 V V +3 ISERROR 1 1 V V +4 SUM 0 30 V R +5 AVERAGE 1 30 V R +6 MIN 1 30 V R +7 MAX 1 30 V R +8 ROW 0 1 V R +9 COLUMN 0 1 V R +10 NA 0 0 V - +11 NPV 2 30 V V R +12 STDEV 1 30 V R +13 DOLLAR 1 2 V V V +14 FIXED 2 2 V V V x +15 SIN 1 1 V V +16 COS 1 1 V V +17 TAN 1 1 V V +18 ATAN 1 1 V V +19 PI 0 0 V - +20 SQRT 1 1 V V +21 EXP 1 1 V V +22 LN 1 1 V V +23 LOG10 1 1 V V +24 ABS 1 1 V V +25 INT 1 1 V V +26 SIGN 1 1 V V +27 ROUND 2 2 V V V +28 LOOKUP 2 3 V V R R +29 INDEX 2 4 R R V V V +30 REPT 2 2 V V V +31 MID 3 3 V V V V +32 LEN 1 1 V V +33 VALUE 1 1 V V +34 TRUE 0 0 V - +35 FALSE 0 0 V - +36 AND 1 30 V R +37 OR 1 30 V R +38 NOT 1 1 V V +39 MOD 2 2 V V V +40 DCOUNT 3 3 V R R R +41 DSUM 3 3 V R R R +42 DAVERAGE 3 3 V R R R +43 DMIN 3 3 V R R R +44 DMAX 3 3 V R R R +45 DSTDEV 3 3 V R R R +46 VAR 1 30 V R +47 DVAR 3 3 V R R R +48 TEXT 2 2 V V V +49 LINEST 1 2 A R R x +50 TREND 1 3 A R R R x +51 LOGEST 1 2 A R R x +52 GROWTH 1 3 A R R R x +56 PV 3 5 V V V V V V +# Built-In Sheet Functions in BIFF2 +57 FV 3 5 V V V V V V +58 NPER 3 5 V V V V V V +59 PMT 3 5 V V V V V V +60 RATE 3 6 V V V V V V V +61 MIRR 3 3 V A V V +62 IRR 1 2 V A V +63 RAND 0 0 V - x +64 MATCH 2 3 V V R R +65 DATE 3 3 V V V V +66 TIME 3 3 V V V V +67 DAY 1 1 V V +68 MONTH 1 1 V V +69 YEAR 1 1 V V +70 WEEKDAY 1 1 V V x +71 HOUR 1 1 V V +72 MINUTE 1 1 V V +73 SECOND 1 1 V V +74 NOW 0 0 V - x +75 AREAS 1 1 V R +76 ROWS 1 1 V A +77 COLUMNS 1 1 V A +78 OFFSET 3 5 R R V V V V x +82 SEARCH 2 3 V V V V +83 TRANSPOSE 1 1 A A +86 TYPE 1 1 V V +97 ATAN2 2 2 V V V +98 ASIN 1 1 V V +99 ACOS 1 1 V V +100 CHOOSE 2 30 R V R +101 HLOOKUP 3 3 V V R R x +102 VLOOKUP 3 3 V V R R x +105 ISREF 1 1 V R +109 LOG 1 2 V V V +111 CHAR 1 1 V V +112 LOWER 1 1 V V +113 UPPER 1 1 V V +114 PROPER 1 1 V V +115 LEFT 1 2 V V V +116 RIGHT 1 2 V V V +117 EXACT 2 2 V V V +118 TRIM 1 1 V V +119 REPLACE 4 4 V V V V V +120 SUBSTITUTE 3 4 V V V V V +121 CODE 1 1 V V +124 FIND 2 3 V V V V +125 CELL 1 2 V V R x +126 ISERR 1 1 V V +127 ISTEXT 1 1 V V +128 ISNUMBER 1 1 V V +129 ISBLANK 1 1 V V +130 T 1 1 V R +131 N 1 1 V R +140 DATEVALUE 1 1 V V +141 TIMEVALUE 1 1 V V +142 SLN 3 3 V V V V +143 SYD 4 4 V V V V V +144 DDB 4 5 V V V V V V +148 INDIRECT 1 2 R V V x +162 CLEAN 1 1 V V +163 MDETERM 1 1 V A +164 MINVERSE 1 1 A A +165 MMULT 2 2 A A A +167 IPMT 4 6 V V V V V V V +168 PPMT 4 6 V V V V V V V +169 COUNTA 0 30 V R +183 PRODUCT 0 30 V R +184 FACT 1 1 V V +189 DPRODUCT 3 3 V R R R +190 ISNONTEXT 1 1 V V +193 STDEVP 1 30 V R +194 VARP 1 30 V R +195 DSTDEVP 3 3 V R R R +196 DVARP 3 3 V R R R +197 TRUNC 1 1 V V x +198 ISLOGICAL 1 1 V V +199 DCOUNTA 3 3 V R R R +# New Built-In Sheet Functions in BIFF3 +49 LINEST 1 4 A R R V V x +50 TREND 1 4 A R R R V x +51 LOGEST 1 4 A R R V V x +52 GROWTH 1 4 A R R R V x +197 TRUNC 1 2 V V V x +204 YEN 1 2 V V V x +205 FINDB 2 3 V V V V +206 SEARCHB 2 3 V V V V +207 REPLACEB 4 4 V V V V V +208 LEFTB 1 2 V V V +209 RIGHTB 1 2 V V V +210 MIDB 3 3 V V V V +211 LENB 1 1 V V +212 ROUNDUP 2 2 V V V +213 ROUNDDOWN 2 2 V V V +214 ASC 1 1 V V +215 JIS 1 1 V V x +219 ADDRESS 2 5 V V V V V V +220 DAYS360 2 2 V V V x +221 TODAY 0 0 V - x +222 VDB 5 7 V V V V V V V V +227 MEDIAN 1 30 V R ... +228 SUMPRODUCT 1 30 V A ... +229 SINH 1 1 V V +230 COSH 1 1 V V +231 TANH 1 1 V V +232 ASINH 1 1 V V +233 ACOSH 1 1 V V +234 ATANH 1 1 V V +235 DGET 3 3 V R R R +244 INFO 1 1 V V +# New Built-In Sheet Functions in BIFF4 +14 FIXED 2 3 V V V V x +204 USDOLLAR 1 2 V V V x +215 DBCS 1 1 V V x +216 RANK 2 3 V V R V +247 DB 4 5 V V V V V V +252 FREQUENCY 2 2 A R R +261 ERROR.TYPE 1 1 V V +269 AVEDEV 1 30 V R ... +270 BETADIST 3 5 V V V V V V +271 GAMMALN 1 1 V V +272 BETAINV 3 5 V V V V V V +273 BINOMDIST 4 4 V V V V V +274 CHIDIST 2 2 V V V +275 CHIINV 2 2 V V V +276 COMBIN 2 2 V V V +277 CONFIDENCE 3 3 V V V V +278 CRITBINOM 3 3 V V V V +279 EVEN 1 1 V V +280 EXPONDIST 3 3 V V V V +281 FDIST 3 3 V V V V +282 FINV 3 3 V V V V +283 FISHER 1 1 V V +284 FISHERINV 1 1 V V +285 FLOOR 2 2 V V V +286 GAMMADIST 4 4 V V V V V +287 GAMMAINV 3 3 V V V V +288 CEILING 2 2 V V V +289 HYPGEOMDIST 4 4 V V V V V +290 LOGNORMDIST 3 3 V V V V +291 LOGINV 3 3 V V V V +292 NEGBINOMDIST 3 3 V V V V +293 NORMDIST 4 4 V V V V V +294 NORMSDIST 1 1 V V +295 NORMINV 3 3 V V V V +296 NORMSINV 1 1 V V +297 STANDARDIZE 3 3 V V V V +298 ODD 1 1 V V +299 PERMUT 2 2 V V V +300 POISSON 3 3 V V V V +301 TDIST 3 3 V V V V +302 WEIBULL 4 4 V V V V V +303 SUMXMY2 2 2 V A A +304 SUMX2MY2 2 2 V A A +305 SUMX2PY2 2 2 V A A +306 CHITEST 2 2 V A A +307 CORREL 2 2 V A A +308 COVAR 2 2 V A A +309 FORECAST 3 3 V V A A +310 FTEST 2 2 V A A +311 INTERCEPT 2 2 V A A +312 PEARSON 2 2 V A A +313 RSQ 2 2 V A A +314 STEYX 2 2 V A A +315 SLOPE 2 2 V A A +316 TTEST 4 4 V A A V V +317 PROB 3 4 V A A V V +318 DEVSQ 1 30 V R ... +319 GEOMEAN 1 30 V R ... +320 HARMEAN 1 30 V R ... +321 SUMSQ 0 30 V R ... +322 KURT 1 30 V R ... +323 SKEW 1 30 V R ... +324 ZTEST 2 3 V R V V +325 LARGE 2 2 V R V +326 SMALL 2 2 V R V +327 QUARTILE 2 2 V R V +328 PERCENTILE 2 2 V R V +329 PERCENTRANK 2 3 V R V V +330 MODE 1 30 V A +331 TRIMMEAN 2 2 V R V +332 TINV 2 2 V V V +# New Built-In Sheet Functions in BIFF5 +70 WEEKDAY 1 2 V V V x +101 HLOOKUP 3 4 V V R R V x +102 VLOOKUP 3 4 V V R R V x +220 DAYS360 2 3 V V V V x +336 CONCATENATE 0 30 V V +337 POWER 2 2 V V V +342 RADIANS 1 1 V V +343 DEGREES 1 1 V V +344 SUBTOTAL 2 30 V V R +345 SUMIF 2 3 V R V R +346 COUNTIF 2 2 V R V +347 COUNTBLANK 1 1 V R +350 ISPMT 4 4 V V V V V +351 DATEDIF 3 3 V V V V +352 DATESTRING 1 1 V V +353 NUMBERSTRING 2 2 V V V +354 ROMAN 1 2 V V V +# New Built-In Sheet Functions in BIFF8 +358 GETPIVOTDATA 2 30 +359 HYPERLINK 1 2 V V V +360 PHONETIC 1 1 V R +361 AVERAGEA 1 30 V R ... +362 MAXA 1 30 V R ... +363 MINA 1 30 V R ... +364 STDEVPA 1 30 V R ... +365 VARPA 1 30 V R ... +366 STDEVA 1 30 V R ... +367 VARA 1 30 V R ... diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord index 3dd8f9ebd9..6cebff51ba 100755 --- a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord @@ -1,516 +1,516 @@ -FC 00 20 -20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75 -66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20 -4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00 -00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43 -6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52 -54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33 -32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08 -00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F -77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11 -00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63 -6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69 -72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61 -73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A -00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E -69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35 -35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D -61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20 -50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73 -63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61 -7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00 -00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72 -75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50 -61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C -69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69 -74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69 -65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44 -6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27 -73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20 -47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A -61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20 -42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74 -65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D -61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F -32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32 -36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43 -20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00 -31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B -20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72 -6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34 -63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20 -5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65 -20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34 -32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D -31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F -56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44 -65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33 -0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04 -00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61 -20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00 -00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00 -00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00 -00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65 -72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44 -72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31 -2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52 -6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D -6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33 -34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C -69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72 -07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32 -30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73 -65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65 -65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00 -30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61 -75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74 -65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65 -72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31 -19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53 -70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52 -65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D -00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09 -00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72 -61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F -6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C -65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33 -30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76 -79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E -65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61 -72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61 -03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32 -35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A -61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72 -65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20 -4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00 -00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53 -54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20 -53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39 -30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63 -6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61 -63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36 -34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61 -72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63 -65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F -70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73 -6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53 -6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38 -31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65 -72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45 -6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C -65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32 -30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63 -65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74 -69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74 -6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64 -73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69 -74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31 -42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E -20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33 -04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F -20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69 -6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04 -00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65 -72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75 -6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00 -38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E -67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36 -30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00 -00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72 -74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73 -20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65 -72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05 -00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E -20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00 -00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75 -70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53 -68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00 -00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72 -74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30 -13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43 -61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73 -03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00 -4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52 -20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72 -67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C -63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42 -6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20 -6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45 -6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F -72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18 -00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31 -20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32 -30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69 -65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75 -61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34 -30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43 -7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30 -36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35 -35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30 -37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33 -33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73 -68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D -00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03 -00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C -20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D -00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08 -00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44 -6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62 -6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D -69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67 -61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27 -05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75 -73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72 -74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20 -22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37 -0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04 -00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F -72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73 -74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69 -6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53 -65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76 -65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67 -68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72 -6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72 -74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00 -00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68 -65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65 -72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35 -2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61 -63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30 -30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75 -6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B -05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20 -52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00 -00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56 -69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F -53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31 -32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61 -6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54 -68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47 -75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72 -69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E -73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34 -20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00 -57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53 -6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E -06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79 -73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E -20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48 -31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79 -20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69 -6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F -77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32 -30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73 -74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32 -20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00 -00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38 -35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76 -79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17 -00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72 -66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73 -65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45 -20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37 -1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66 -69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00 -00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39 -42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35 -31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D -35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48 -65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62 -65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E -69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00 -4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E -69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00 -00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D -33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41 -69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B -20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20 -4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C -64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35 -55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61 -6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20 -27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00 -53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F -72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50 -61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00 -31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74 -6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64 -65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B -44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61 -72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20 -4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73 -74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F -6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54 -36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61 -65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20 -4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00 -41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00 -00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00 -38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65 -20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20 -53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00 -00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61 -67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E -74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47 -72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35 -2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20 -4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00 -4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00 -47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C -69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39 -19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F -77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32 -32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72 -74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C -79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30 -31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56 -2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65 -07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D -37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34 -35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D -69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16 -00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C -20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B -00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00 -48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65 -20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04 -00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70 -61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42 -6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50 -2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30 -34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20 -53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53 -75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76 -65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37 -39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F -6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38 -10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73 -74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61 -62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E -20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72 -6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70 -69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32 -34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A -61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30 -33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66 -20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31 -37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20 -53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36 -36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72 -20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C -69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00 -00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20 -47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00 -43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43 -5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68 -69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31 -2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B -20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67 -73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04 -00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69 -6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E -67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74 -65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F -00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61 -6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E -61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F -6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61 -6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43 -61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37 -20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65 -74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D -37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72 -65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20 -22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20 -52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18 -00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61 -6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D -37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50 -61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00 -31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E -65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31 -23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20 -59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69 -6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00 -00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04 -00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F -72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32 -37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75 -74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D -6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72 -63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72 -74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65 -72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48 -20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32 -0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67 -04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73 -74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42 -6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20 -42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30 -6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33 -1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65 -72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F -6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69 -61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00 -00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65 -6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35 -30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20 -52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38 -35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50 -72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69 -6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72 -76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72 -74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65 -74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20 -4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C -00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00 -00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75 -6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C -79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F -75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20 -45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65 -31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20 -6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C -20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43 -75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20 -61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F -61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53 -6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20 -43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24 -00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65 -72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72 -61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00 -53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00 -48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61 -20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73 -76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54 -72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00 -00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20 -39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D -62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63 -68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61 -72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41 -6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74 -69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00 -00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44 -20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37 -31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63 -65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00 -00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53 -65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00 -36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C -61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D -6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00 -38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42 -6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D -36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79 -69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65 -6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37 -35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72 -6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D -6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61 -74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34 -43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00 -36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46 -34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00 -38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69 -6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F -62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20 -43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69 -72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69 -6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30 -35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F -64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36 -30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20 -4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36 -33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00 -00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20 -43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68 -6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00 -53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D -32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69 -67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39 -12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20 -54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15 -00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65 -65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A -00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43 -68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38 -35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72 -69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00 -00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73 -20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35 -2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75 -6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35 -2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63 -68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32 -04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00 -00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00 -4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54 -31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77 -6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F -73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58 -2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69 -6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33 -33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20 -54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27 -00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69 -65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72 -70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73 -69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00 -00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73 -74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00 -44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61 -70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07 -00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79 -6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74 -69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61 -72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41 -64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38 -37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53 -74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74 -69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65 -72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03 -00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00 -56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69 -6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39 -20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68 -65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D -31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31 -2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47 -75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72 -69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20 -43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68 -65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00 -00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00 -77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64 -20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72 -65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49 -43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B -2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D -69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34 -0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00 -46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61 -6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62 -61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43 -6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75 -67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53 -74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E -20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C -69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50 -6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74 -20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00 -44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79 -72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20 -46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36 -39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D -30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E -53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00 -36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20 -48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00 -36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00 -43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32 -34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65 -20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61 -69 +FC 00 20 +20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75 +66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20 +4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00 +00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43 +6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52 +54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33 +32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08 +00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F +77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11 +00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63 +6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69 +72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61 +73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A +00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E +69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35 +35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D +61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20 +50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73 +63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61 +7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00 +00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72 +75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50 +61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C +69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69 +74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69 +65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44 +6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27 +73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20 +47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A +61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20 +42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74 +65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D +61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F +32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32 +36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43 +20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00 +31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B +20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72 +6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34 +63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20 +5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65 +20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34 +32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D +31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F +56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44 +65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33 +0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04 +00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61 +20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00 +00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00 +00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00 +00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65 +72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44 +72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31 +2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52 +6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D +6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33 +34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C +69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72 +07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32 +30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73 +65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65 +65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00 +30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61 +75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74 +65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65 +72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31 +19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53 +70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52 +65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D +00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09 +00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72 +61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F +6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C +65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33 +30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76 +79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E +65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61 +72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61 +03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32 +35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A +61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72 +65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20 +4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00 +00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53 +54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20 +53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39 +30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63 +6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61 +63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36 +34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61 +72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63 +65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F +70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73 +6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53 +6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38 +31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65 +72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45 +6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C +65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32 +30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63 +65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74 +69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74 +6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64 +73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69 +74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31 +42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E +20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33 +04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F +20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69 +6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04 +00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65 +72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75 +6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00 +38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E +67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36 +30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00 +00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72 +74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73 +20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65 +72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05 +00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E +20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00 +00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75 +70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53 +68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00 +00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72 +74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30 +13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43 +61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73 +03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00 +4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52 +20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72 +67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C +63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42 +6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20 +6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45 +6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F +72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18 +00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31 +20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32 +30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69 +65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75 +61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34 +30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43 +7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30 +36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35 +35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30 +37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33 +33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73 +68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D +00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03 +00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C +20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D +00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08 +00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44 +6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62 +6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67 +61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27 +05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75 +73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72 +74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20 +22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37 +0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04 +00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F +72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73 +74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69 +6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53 +65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76 +65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67 +68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72 +6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72 +74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00 +00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68 +65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65 +72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35 +2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61 +63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30 +30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75 +6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B +05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20 +52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00 +00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56 +69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F +53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31 +32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61 +6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54 +68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47 +75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72 +69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E +73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34 +20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00 +57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53 +6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E +06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79 +73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E +20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48 +31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79 +20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69 +6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F +77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32 +30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73 +74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32 +20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00 +00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38 +35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76 +79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17 +00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72 +66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73 +65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45 +20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37 +1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66 +69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00 +00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39 +42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35 +31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D +35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48 +65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62 +65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E +69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00 +4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E +69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00 +00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D +33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41 +69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B +20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20 +4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C +64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35 +55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61 +6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20 +27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00 +53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F +72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50 +61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00 +31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74 +6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64 +65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B +44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61 +72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20 +4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73 +74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F +6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54 +36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61 +65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20 +4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00 +41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00 +00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00 +38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65 +20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20 +53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00 +00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61 +67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E +74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47 +72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35 +2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20 +4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00 +4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00 +47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C +69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39 +19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F +77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32 +32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72 +74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C +79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30 +31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56 +2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65 +07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D +37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34 +35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16 +00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C +20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B +00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00 +48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65 +20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04 +00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70 +61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42 +6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50 +2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30 +34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20 +53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53 +75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76 +65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37 +39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F +6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38 +10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73 +74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61 +62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E +20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72 +6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70 +69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32 +34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A +61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30 +33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66 +20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31 +37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20 +53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36 +36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72 +20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C +69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00 +00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20 +47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00 +43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43 +5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68 +69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31 +2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B +20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67 +73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04 +00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69 +6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E +67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74 +65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F +00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61 +6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E +61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F +6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61 +6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43 +61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37 +20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65 +74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D +37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72 +65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20 +22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20 +52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18 +00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61 +6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D +37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50 +61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00 +31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E +65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31 +23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20 +59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69 +6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00 +00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04 +00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F +72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32 +37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75 +74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D +6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72 +63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72 +74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65 +72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48 +20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32 +0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67 +04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73 +74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42 +6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20 +42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30 +6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33 +1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65 +72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F +6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69 +61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00 +00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65 +6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35 +30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20 +52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38 +35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50 +72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69 +6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72 +76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72 +74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65 +74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20 +4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C +00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00 +00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75 +6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C +79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F +75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20 +45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65 +31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20 +6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C +20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43 +75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20 +61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F +61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53 +6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20 +43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24 +00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65 +72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72 +61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00 +53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00 +48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61 +20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73 +76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54 +72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00 +00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20 +39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D +62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63 +68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61 +72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41 +6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74 +69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00 +00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44 +20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37 +31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63 +65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00 +00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53 +65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00 +36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C +61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D +6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00 +38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42 +6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D +36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79 +69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65 +6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37 +35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72 +6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D +6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61 +74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34 +43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00 +36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46 +34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00 +38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69 +6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F +62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20 +43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69 +72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69 +6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30 +35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F +64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36 +30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20 +4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36 +33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00 +00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20 +43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68 +6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00 +53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D +32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69 +67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39 +12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20 +54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15 +00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65 +65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A +00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43 +68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38 +35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72 +69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00 +00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73 +20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35 +2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75 +6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35 +2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63 +68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32 +04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00 +00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00 +4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54 +31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77 +6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F +73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58 +2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69 +6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33 +33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20 +54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27 +00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69 +65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72 +70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73 +69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00 +00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73 +74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00 +44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61 +70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07 +00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79 +6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74 +69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61 +72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41 +64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38 +37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53 +74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74 +69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65 +72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03 +00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00 +56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69 +6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39 +20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68 +65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D +31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31 +2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47 +75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72 +69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20 +43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68 +65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00 +00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00 +77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64 +20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72 +65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49 +43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B +2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34 +0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00 +46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61 +6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62 +61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43 +6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75 +67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53 +74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E +20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C +69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50 +6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74 +20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00 +44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79 +72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20 +46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36 +39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D +30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E +53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00 +36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20 +48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00 +36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00 +43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32 +34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65 +20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61 +69