def _EndRecData(fpin):
<EOL>fpin.seek(<NUM_LIT:0>, <NUM_LIT:2>)<EOL>filesize = fpin.tell()<EOL>try:<EOL><INDENT>fpin.seek(-sizeEndCentDir, <NUM_LIT:2>)<EOL><DEDENT>except IOError:<EOL><INDENT>return None<EOL><DEDENT>data = fpin.read()<EOL>if data[<NUM_LIT:0>:<NUM_LIT:4>] == stringEndArchive and data[-<NUM_LIT:2>:] == "<STR_LIT>":<EOL><INDENT>endrec = struct.unpack(structEndArchive, data)<EOL>endrec=list(endrec)<EOL>endrec.append("<STR_LIT>")<EOL>endrec.append(filesize - sizeEndCentDir)<EOL>return _EndRecData64(fpin, -sizeEndCentDir, endrec)<EOL><DEDENT>maxCommentStart = max(filesize - (<NUM_LIT:1> << <NUM_LIT:16>) - sizeEndCentDir, <NUM_LIT:0>)<EOL>fpin.seek(maxCommentStart, <NUM_LIT:0>)<EOL>data = fpin.read()<EOL>start = data.rfind(stringEndArchive)<EOL>if start >= <NUM_LIT:0>:<EOL><INDENT>recData = data[start:start+sizeEndCentDir]<EOL>endrec = list(struct.unpack(structEndArchive, recData))<EOL>commentSize = endrec[_ECD_COMMENT_SIZE] <EOL>comment = data[start+sizeEndCentDir:start+sizeEndCentDir+commentSize]<EOL>endrec.append(comment)<EOL>endrec.append(maxCommentStart + start)<EOL>return _EndRecData64(fpin, maxCommentStart + start - filesize,<EOL>endrec)<EOL><DEDENT>return<EOL>
Return data from the "End of Central Directory" record, or None.

    The data is a list of the nine items in the ZIP "End of central dir"
    record followed by a tenth item, the file seek offset of this record.