Commit e6a16d09 authored by dimitri's avatar dimitri

Release-1.3.4-20031019

parent a139a433
DOXYGEN Version 1.3.4-20031005 DOXYGEN Version 1.3.4-20031019
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (05 October 2003) Dimitri van Heesch (19 October 2003)
DOXYGEN Version 1.3.4_20031005 DOXYGEN Version 1.3.4_20031019
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (05 October 2003) Dimitri van Heesch (dimitri@stack.nl) (19 October 2003)
1.3.4-20031005 1.3.4-20031019
...@@ -55,6 +55,7 @@ Below is an alphabetical index of the tags that are recognized ...@@ -55,6 +55,7 @@ Below is an alphabetical index of the tags that are recognized
followed by the descriptions of the tags grouped by category. followed by the descriptions of the tags grouped by category.
\secreflist \secreflist
\refitem cfg_abbreviate_brief ABBREVIATE_BRIEF
\refitem cfg_aliases ALIASES \refitem cfg_aliases ALIASES
\refitem cfg_allexternals ALLEXTERNALS \refitem cfg_allexternals ALLEXTERNALS
\refitem cfg_alphabetical_index ALPHABETICAL_INDEX \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
...@@ -200,7 +201,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -200,7 +201,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_warnings WARNINGS \refitem cfg_warnings WARNINGS
\refitem cfg_xml_dtd XML_DTD \refitem cfg_xml_dtd XML_DTD
\refitem cfg_xml_output XML_OUTPUT \refitem cfg_xml_output XML_OUTPUT
\refitem cfg_xml_programlising XML_PROGRAMLISTING \refitem cfg_xml_programlisting XML_PROGRAMLISTING
\refitem cfg_xml_schema XML_SCHEMA \refitem cfg_xml_schema XML_SCHEMA
\endsecreflist \endsecreflist
...@@ -272,6 +273,18 @@ followed by the descriptions of the tags grouped by category. ...@@ -272,6 +273,18 @@ followed by the descriptions of the tags grouped by category.
If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the
brief descriptions will be completely suppressed. brief descriptions will be completely suppressed.
\anchor cfg_abbreviate_brief
<dt>\c ABBREVIATE_BRIEF <dd>
\addindex ABBREVIATE_BRIEF
This tag implements a quasi-intelligent brief description abbreviator
that is used to form the text in various listings. Each string
in this list, if found as the leading text of the brief description, will be
stripped from the text and the result after processing the whole list, is used
as the annotated text. Otherwise, the brief description is used as-is. If left
blank, the following values are used ("\$name" is automatically replaced with the
name of the entity): "The $name class" "The $name widget" "The $name file"
"is" "provides" "specifies" "contains" "represents" "a" "an" "the".
\anchor cfg_always_detailed_sec \anchor cfg_always_detailed_sec
<dt>\c ALWAYS_DETAILED_SEC <dd> <dt>\c ALWAYS_DETAILED_SEC <dd>
\addindex ALWAYS_DETAILED_SEC \addindex ALWAYS_DETAILED_SEC
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version unknown), 29 languages Currently (version 1.3.3), 29 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
...@@ -73,7 +73,7 @@ when the translator was updated. ...@@ -73,7 +73,7 @@ when the translator was updated.
<TD>Chinese Traditional</TD> <TD>Chinese Traditional</TD>
<TD>Daniel YC Lin<br>Gary Lee</TD> <TD>Daniel YC Lin<br>Gary Lee</TD>
<TD>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</TD> <TD>daniel@NOSPAM.twpda.com<br>garylee@NOSPAM.ecosine.com.tw</TD>
<TD>1.3.3</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Croatian</TD> <TD>Croatian</TD>
...@@ -91,7 +91,7 @@ when the translator was updated. ...@@ -91,7 +91,7 @@ when the translator was updated.
<TD>Danish</TD> <TD>Danish</TD>
<TD>Erik S&oslash;e S&oslash;rensen</TD> <TD>Erik S&oslash;e S&oslash;rensen</TD>
<TD>erik@NOSPAM.mail.nu</TD> <TD>erik@NOSPAM.mail.nu</TD>
<TD>strange</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Dutch</TD> <TD>Dutch</TD>
...@@ -187,7 +187,7 @@ when the translator was updated. ...@@ -187,7 +187,7 @@ when the translator was updated.
<TD>Russian</TD> <TD>Russian</TD>
<TD>Alexandr Chelpanov</TD> <TD>Alexandr Chelpanov</TD>
<TD>cav@NOSPAM.cryptopro.ru</TD> <TD>cav@NOSPAM.cryptopro.ru</TD>
<TD>strange</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Serbian</TD> <TD>Serbian</TD>
...@@ -243,14 +243,14 @@ when the translator was updated. ...@@ -243,14 +243,14 @@ when the translator was updated.
Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\ Chinese & Wei Liu & {\tt liuwei@asiainfo.com} & 1.2.13 \\
& Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\ & Wang Weihan & {\tt wangweihan@capinfo.com.cn} & \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt daniel@twpda.com} & 1.3.3 \\ Chinese Traditional & Daniel YC Lin & {\tt daniel@twpda.com} & up-to-date \\
& Gary Lee & {\tt garylee@ecosine.com.tw} & \\ & Gary Lee & {\tt garylee@ecosine.com.tw} & \\
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & strange \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & up-to-date \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} & up-to-date \\
\hline \hline
...@@ -285,7 +285,7 @@ when the translator was updated. ...@@ -285,7 +285,7 @@ when the translator was updated.
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.16 \\
\hline \hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & strange \\ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline \hline
Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.3.3 \\ Serbian & Dejan Milosavljevic & {\tt dmilos@email.com} & 1.3.3 \\
\hline \hline
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.4_20031005 Version: 1.3.4_20031019
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -72,6 +72,7 @@ class ClassDef : public Definition ...@@ -72,6 +72,7 @@ class ClassDef : public Definition
QCString getSourceFileBase() const; QCString getSourceFileBase() const;
QCString getReference() const; QCString getReference() const;
bool isReference() const; bool isReference() const;
bool isLocal() const { return m_isLocal; }
bool hasDocumentation() const; bool hasDocumentation() const;
......
...@@ -71,7 +71,11 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f ...@@ -71,7 +71,11 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
) )
{ {
bool isLink = cd->isLinkable(); bool isLink = cd->isLinkable();
if (isLink || !Config_getBool("HIDE_UNDOC_CLASSES")) if (isLink ||
(!Config_getBool("HIDE_UNDOC_CLASSES") &&
(!cd->isLocal() || Config_getBool("EXTRACT_LOCAL_CLASSES"))
)
)
{ {
if (!found) if (!found)
{ {
...@@ -127,8 +131,10 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f ...@@ -127,8 +131,10 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
ol.startMemberDescription(); ol.startMemberDescription();
ol.parseDoc(cd->briefFile(),cd->briefLine(),cd,0, ol.parseDoc(cd->briefFile(),cd->briefLine(),cd,0,
cd->briefDescription(),FALSE,FALSE); cd->briefDescription(),FALSE,FALSE);
if ((!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) || if (//(!cd->briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
!cd->documentation().isEmpty()) //!cd->documentation().isEmpty())
cd->isLinkableInProject()
)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
......
...@@ -1245,6 +1245,22 @@ void Config::check() ...@@ -1245,6 +1245,22 @@ void Config::check()
Config_getBool("INLINE_INFO")=FALSE; Config_getBool("INLINE_INFO")=FALSE;
} }
// add default words if needed
QStrList &annotationFromBrief = Config_getList("ABBREVIATE_BRIEF");
if (annotationFromBrief.isEmpty())
{
annotationFromBrief.append("The $name class");
annotationFromBrief.append("The $name widget");
annotationFromBrief.append("The $name file");
annotationFromBrief.append("is");
annotationFromBrief.append("provides");
annotationFromBrief.append("specifies");
annotationFromBrief.append("contains");
annotationFromBrief.append("represents");
annotationFromBrief.append("a");
annotationFromBrief.append("an");
annotationFromBrief.append("the");
}
} }
void Config::init() void Config::init()
...@@ -1419,6 +1435,17 @@ void Config::create() ...@@ -1419,6 +1435,17 @@ void Config::create()
"brief descriptions will be completely suppressed. \n", "brief descriptions will be completely suppressed. \n",
TRUE TRUE
); );
cl = addList(
"ABBREVIATE_BRIEF",
"This tag implements a quasi-intelligent brief description abbreviator \n"
"that is used to form the text in various listings. Each string \n"
"in this list, if found as the leading text of the brief description, will be \n"
"stripped from the text and the result after processing the whole list, is used \n"
"as the annotated text. Otherwise, the brief description is used as-is. If left \n"
"blank, the following values are used (\"$name\" is automatically replaced with the \n"
"name of the entity): \"The $name class\" \"The $name widget\" \"The $name file\" \n"
"\"is\" \"provides\" \"specifies\" \"contains\" \"represents\" \"a\" \"an\" \"the\"\n"
);
cb = addBool( cb = addBool(
"ALWAYS_DETAILED_SEC", "ALWAYS_DETAILED_SEC",
"If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n" "If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n"
......
...@@ -1218,6 +1218,8 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor) ...@@ -1218,6 +1218,8 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor)
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'",id.data()); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'",id.data());
m_anchor = "invalid";
m_file = "invalid";
} }
} }
} }
...@@ -4730,7 +4732,7 @@ void DocRoot::parse() ...@@ -4730,7 +4732,7 @@ void DocRoot::parse()
} }
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid anchor id `%s'; ignoring section",g_token->sectionId.data()); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid section id `%s'; ignoring section",g_token->sectionId.data());
retval = 0; retval = 0;
} }
} }
......
...@@ -248,9 +248,9 @@ class DirEntry ...@@ -248,9 +248,9 @@ class DirEntry
{ {
public: public:
enum EntryKind { Dir, File }; enum EntryKind { Dir, File };
DirEntry::DirEntry(DirEntry *parent,FileDef *fd) DirEntry(DirEntry *parent,FileDef *fd)
: m_parent(parent), m_kind(File), m_fd(fd), m_isLast(FALSE) { } : m_parent(parent), m_kind(File), m_fd(fd), m_isLast(FALSE) { }
DirEntry::DirEntry(DirEntry *parent) DirEntry(DirEntry *parent)
: m_parent(parent), m_kind(Dir), m_fd(0), m_isLast(FALSE) { } : m_parent(parent), m_kind(Dir), m_fd(0), m_isLast(FALSE) { }
virtual ~DirEntry() { } virtual ~DirEntry() { }
EntryKind kind() const { return m_kind; } EntryKind kind() const { return m_kind; }
......
...@@ -749,7 +749,7 @@ void FTVHelp::generateTreeView() ...@@ -749,7 +749,7 @@ void FTVHelp::generateTreeView()
t << " </script>\n"; t << " </script>\n";
t << " </head>\n"; t << " </head>\n";
t << "\n"; t << "\n";
t << " <body bgcolor=\"#ffffff\">\n"; t << " <body>\n";
t << " <div class=\"directory\">\n"; t << " <div class=\"directory\">\n";
t << " <h3>"; t << " <h3>";
QCString &projName = Config_getString("PROJECT_NAME"); QCString &projName = Config_getString("PROJECT_NAME");
......
...@@ -205,7 +205,8 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -205,7 +205,8 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
(srcMd->getOuterScope()->definitionType()==Definition::TypeFile && (srcMd->getOuterScope()->definitionType()==Definition::TypeFile &&
md->getOuterScope()->definitionType()==Definition::TypeFile); md->getOuterScope()->definitionType()==Definition::TypeFile);
if (matchArguments(srcMd->argumentList(),md->argumentList()) && if (srcMd->isFunction() && md->isFunction() &&
matchArguments(srcMd->argumentList(),md->argumentList()) &&
sameScope sameScope
) )
{ {
...@@ -690,7 +691,8 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) ...@@ -690,7 +691,8 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
/*! Add a member to the group with the highest priority */ /*! Add a member to the group with the highest priority */
void addMemberToGroups(Entry *root,MemberDef *md) void addMemberToGroups(Entry *root,MemberDef *md)
{ {
//printf(" Root %p = %s, md %p=%s groups=%d\n", root, root->name.data(), md, md->name().data(), root->groups->count() ); //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
// root, root->name.data(), md, md->name().data(), root->groups->count() );
QListIterator<Grouping> gli(*root->groups); QListIterator<Grouping> gli(*root->groups);
Grouping *g; Grouping *g;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <qtextstream.h> #include <qtextstream.h>
#include <qdatetime.h> #include <qdatetime.h>
#include <qdir.h> #include <qdir.h>
#include <qregexp.h>
#include "message.h" #include "message.h"
#include "index.h" #include "index.h"
...@@ -136,34 +137,28 @@ bool stripWord(QCString &s,QCString w) ...@@ -136,34 +137,28 @@ bool stripWord(QCString &s,QCString w)
// some quasi intelligent brief description abbreviator :^) // some quasi intelligent brief description abbreviator :^)
QCString abbreviate(const char *s,const char *name) QCString abbreviate(const char *s,const char *name)
{ {
QCString scopelessName=name;
int i=scopelessName.findRev("::");
if (i!=-1) scopelessName=scopelessName.mid(i);
QCString result=s; QCString result=s;
QCString start1=(QCString)"The "+name+" class ";
QCString start2=(QCString)"The "+name+" widget ";
QCString start3=(QCString)"The "+name+" file ";
result=result.stripWhiteSpace(); result=result.stripWhiteSpace();
// strip trailing . // strip trailing .
if (!result.isEmpty() && result.at(result.length()-1)=='.') if (!result.isEmpty() && result.at(result.length()-1)=='.')
result=result.left(result.length()-1); result=result.left(result.length()-1);
bool found=FALSE;
found = found || stripWord(result,start1); // strip any predefined prefix
found = found || stripWord(result,start2); QStrList &briefDescAbbrev = Config_getList("ANNOTATION_FROM_BRIEF");
found = found || stripWord(result,start3); const char *p = briefDescAbbrev.first();
if (found) while (p)
{ {
bool found=FALSE; QCString s = p;
found = found || stripWord(result,"is "); s.replace(QRegExp("\\$name"), scopelessName); // replace $name with entity name
found = found || stripWord(result,"provides "); s += " ";
found = found || stripWord(result,"specifies "); stripWord(result,s);
found = found || stripWord(result,"contains "); p = briefDescAbbrev.next();
found = found || stripWord(result,"represents ");
found = found || stripWord(result,"implements ");
if (found)
{
stripWord(result,"a ");
stripWord(result,"an ");
stripWord(result,"the ");
}
} }
// capitalize first word
if (!result.isEmpty()) if (!result.isEmpty())
{ {
int c=result[0]; int c=result[0];
...@@ -1320,13 +1315,13 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -1320,13 +1315,13 @@ void writeAnnotatedClassList(OutputList &ol)
void writeAlphabeticalClassList(OutputList &ol) void writeAlphabeticalClassList(OutputList &ol)
{ {
//ol.startAlphabeticalIndexList(); //ol.startAlphabeticalIndexList();
ol.writeString("<table align=center width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
// first count the number of headers // first count the number of headers
ClassSDict::Iterator cli(Doxygen::classSDict); ClassSDict::Iterator cli(Doxygen::classSDict);
ClassDef *cd; ClassDef *cd;
char startLetter=0; char startLetter=0;
int headerItems=0; int headerItems=0;
QCString alphaLinks = "<p><div class=\"qindex\">";
for (;(cd=cli.current());++cli) for (;(cd=cli.current());++cli)
{ {
if (cd->isLinkableInProject() && cd->templateMaster()==0) if (cd->isLinkableInProject() && cd->templateMaster()==0)
...@@ -1336,10 +1331,18 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1336,10 +1331,18 @@ void writeAlphabeticalClassList(OutputList &ol)
if (toupper(cd->className().at(index))!=startLetter) // new begin letter => new header if (toupper(cd->className().at(index))!=startLetter) // new begin letter => new header
{ {
startLetter=toupper(cd->className().at(index)); startLetter=toupper(cd->className().at(index));
if (headerItems) alphaLinks += "&nbsp;|&nbsp;";
headerItems++; headerItems++;
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
startLetter + "\">" +
startLetter + "</a>";
} }
} }
} }
alphaLinks += "</div><p>\n";
ol.writeString(alphaLinks);
ol.writeString("<table align=center width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
// the number of columns in the table // the number of columns in the table
const int columns = Config_getInt("COLS_IN_ALPHA_INDEX"); const int columns = Config_getInt("COLS_IN_ALPHA_INDEX");
...@@ -1419,6 +1422,9 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1419,6 +1422,9 @@ void writeAlphabeticalClassList(OutputList &ol)
startLetter=toupper(cd->className().at(index)); startLetter=toupper(cd->className().at(index));
char s[2]; s[0]=startLetter; s[1]=0; char s[2]; s[0]=startLetter; s[1]=0;
//ol.writeIndexHeading(s); //ol.writeIndexHeading(s);
ol.writeString("<a name=\"letter_");
ol.writeString(s);
ol.writeString("\"></a>");
ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
"<tr>" "<tr>"
"<td><div class=\"ah\">&nbsp;&nbsp;"); "<td><div class=\"ah\">&nbsp;&nbsp;");
...@@ -1476,6 +1482,8 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1476,6 +1482,8 @@ void writeAlphabeticalClassList(OutputList &ol)
} }
//ol.endAlphabeticalIndexList(); //ol.endAlphabeticalIndexList();
ol.writeString("</table>"); ol.writeString("</table>");
ol.writeString(alphaLinks);
// release the temporary memory // release the temporary memory
for (i=0;i<columns;i++) for (i=0;i<columns;i++)
......
...@@ -21,205 +21,142 @@ ...@@ -21,205 +21,142 @@
#include <qfile.h> #include <qfile.h>
#include <qdir.h> #include <qdir.h>
unsigned char doxygen_png_data[] = { unsigned char doxygen_png_data[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x35, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2d,
0x08, 0x02, 0x00, 0x00, 0x00, 0x2f, 0x70, 0x49, 0x98, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x6f, 0x6b, 0x3e, 0xc2, 0x00, 0x00, 0x03,
0x06, 0x74, 0x52, 0x4e, 0x53, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x37, 0x00, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xbf, 0xbe, 0xa4, 0xf7,
0x58, 0x1b, 0x7d, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xe4, 0x8c, 0xff, 0xfe, 0xd8, 0xf4, 0xda, 0x6f, 0xda, 0xcb, 0x86, 0xf9,
0xff, 0x00, 0xff, 0x00, 0xe2, 0xc3, 0xbb, 0xcb, 0x4a, 0x00, 0x00, 0x08, 0xeb, 0xa1, 0xde, 0xdb, 0xb4, 0x00, 0x00, 0x00, 0xb9, 0xab, 0x71, 0xdf,
0x33, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x58, 0x6b, 0x6c, 0x54, 0xdf, 0xc4, 0x5b, 0x51, 0x26, 0xff, 0xff, 0xe1, 0xd7, 0xc3, 0x6d, 0xae,
0x55, 0x10, 0xde, 0xc4, 0x67, 0x34, 0x04, 0x34, 0x2a, 0x54, 0x4a, 0x77, 0x92, 0x2b, 0xd5, 0xbb, 0x57, 0xf1, 0xcd, 0x49, 0xee, 0xc4, 0x30, 0xd1,
0x31, 0x29, 0x62, 0x44, 0x25, 0xa6, 0x60, 0x2d, 0xed, 0xb6, 0xc1, 0x26, 0xad, 0x2d, 0x3d, 0x37, 0x1d, 0x67, 0x5e, 0x37, 0x60, 0x5f, 0x50, 0x40,
0xfa, 0xc3, 0x44, 0x25, 0x1a, 0x89, 0x34, 0xa5, 0xd1, 0x22, 0xbf, 0x30, 0x3f, 0x32, 0xfd, 0xf8, 0xc9, 0xfc, 0xf4, 0xbc, 0xdc, 0xd4, 0x9f, 0xfb,
0x21, 0x01, 0xa3, 0x89, 0xf1, 0x81, 0xb6, 0xf1, 0x07, 0xd5, 0xa4, 0xfc, 0xf0, 0xaf, 0x1f, 0x1d, 0x13, 0xff, 0xcc, 0xcc, 0xdf, 0xb2, 0xb2, 0xa9,
0x90, 0x26, 0x46, 0x69, 0xd2, 0x1a, 0x45, 0xa5, 0x15, 0x51, 0xd0, 0x3e, 0x22, 0x22, 0x12, 0x14, 0x3e, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x22,
0x56, 0x28, 0x5d, 0x2c, 0x8a, 0x01, 0x84, 0xd2, 0xc7, 0xb6, 0x97, 0x76, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x26,
0x23, 0x3f, 0x4a, 0x42, 0x51, 0xa0, 0x4f, 0xe8, 0xf5, 0x3b, 0x33, 0xe7, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x2a,
0x9c, 0x3d, 0xdb, 0x6e, 0x77, 0xb7, 0xf5, 0x4a, 0xd1, 0xdc, 0xc9, 0xe4, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2e,
0x66, 0x76, 0xce, 0x37, 0x33, 0xdf, 0x7c, 0xbb, 0x7b, 0x7b, 0xb7, 0x1e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32,
0xdb, 0x35, 0x87, 0xcc, 0x33, 0xd3, 0x04, 0xfe, 0x3f, 0xe6, 0x4a, 0xe9, 0x32, 0x32, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x36,
0x98, 0x4d, 0x59, 0x4a, 0x4f, 0x2c, 0x9b, 0xe9, 0x2d, 0xae, 0x09, 0x9b, 0x36, 0x36, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x3a,
0x8e, 0x94, 0x81, 0x40, 0xb5, 0x65, 0xfd, 0xc4, 0x8e, 0xd8, 0x95, 0x92, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3e,
0x6d, 0x3a, 0x52, 0x42, 0x41, 0xdb, 0x0e, 0xb1, 0x23, 0x76, 0xa5, 0x64, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42,
0x73, 0xa5, 0x74, 0xcc, 0x5c, 0x29, 0x1d, 0x33, 0x57, 0x4a, 0xc7, 0xcc, 0x42, 0x42, 0x43, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x46,
0x95, 0xd2, 0x31, 0x73, 0xa5, 0x74, 0xcc, 0x5c, 0x29, 0x1d, 0xb3, 0x69, 0x46, 0x46, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a,
0x4b, 0xd9, 0xa5, 0xa4, 0xdc, 0xef, 0x4a, 0xc9, 0x36, 0x3d, 0x29, 0x0f, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4e,
0xd8, 0xb6, 0x45, 0xde, 0x8d, 0xd8, 0x95, 0x92, 0x2d, 0x81, 0x0a, 0x31, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x52,
0x7f, 0x26, 0x5a, 0xd6, 0x41, 0xdb, 0x3e, 0xcd, 0x8e, 0x58, 0x4b, 0xe9, 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
0x99, 0xdc, 0x62, 0x36, 0x9c, 0x2c, 0x19, 0xff, 0x27, 0x69, 0xc2, 0x0e, 0x56, 0x56, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
0xf1, 0x7f, 0xd7, 0xc6, 0xc7, 0x78, 0x12, 0xd9, 0x74, 0xa4, 0xe4, 0xca, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5e,
0x40, 0xe0, 0x0b, 0xcb, 0x0a, 0x5a, 0x56, 0x33, 0x5d, 0x65, 0x60, 0xdb, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x62,
0x3d, 0xb6, 0xdd, 0xcb, 0x8e, 0x97, 0x7a, 0xff, 0x09, 0x60, 0xf6, 0x43, 0x62, 0x62, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x66,
0x81, 0xc0, 0xce, 0x68, 0x0c, 0x00, 0xcd, 0x08, 0xc6, 0x15, 0xe2, 0x5a, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a,
0x54, 0xf4, 0x1c, 0x5e, 0xe2, 0xaa, 0x33, 0x13, 0x85, 0x50, 0x1d, 0xe4, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
0x69, 0x34, 0xcf, 0xa0, 0x41, 0x40, 0xd2, 0x30, 0x07, 0x45, 0x23, 0x23, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72,
0x4b, 0xe9, 0x56, 0x9a, 0xde, 0xb8, 0x95, 0xcd, 0x89, 0x53, 0x93, 0x52, 0x72, 0x72, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
0x8f, 0xb4, 0xed, 0xb0, 0x56, 0x4d, 0xb9, 0x99, 0x09, 0x43, 0x29, 0x80, 0x76, 0x76, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
0xf3, 0xf2, 0x1e, 0x05, 0x5e, 0x1d, 0x85, 0xc7, 0xc1, 0x58, 0x4d, 0xc2, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e,
0xec, 0xd4, 0x47, 0x68, 0x8e, 0x8c, 0xcf, 0x97, 0x8a, 0x2b, 0x0d, 0x8a, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
0x74, 0x53, 0xa3, 0x23, 0xef, 0x93, 0xc1, 0x4a, 0x77, 0x10, 0x60, 0x9e, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
0x8b, 0xc0, 0xe0, 0x16, 0x8e, 0x8e, 0x65, 0x4f, 0xae, 0x55, 0x83, 0x62, 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a,
0x20, 0xf9, 0xfd, 0x56, 0xad, 0xc2, 0x13, 0x56, 0x0e, 0x2b, 0xd8, 0xa4, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e,
0x6a, 0x4e, 0x2a, 0xa5, 0x31, 0x35, 0x8e, 0x94, 0x72, 0x5b, 0xd2, 0xb1, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92,
0x37, 0xbe, 0x2b, 0x12, 0x51, 0x19, 0x7c, 0x00, 0xcd, 0x41, 0xdc, 0xcd, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96,
0x90, 0xa6, 0xd7, 0xfc, 0x4c, 0x7d, 0xf8, 0xe1, 0x5b, 0xd1, 0x47, 0x3b, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
0x8d, 0xb7, 0x21, 0xc1, 0x5c, 0xe3, 0x9d, 0x96, 0x83, 0xc6, 0x15, 0xaa, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
0xd1, 0xc1, 0xa4, 0x17, 0x49, 0x42, 0x4a, 0x1a, 0xfc, 0xb9, 0xbe, 0x1b, 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
0xd2, 0x9f, 0x17, 0x71, 0x4f, 0x64, 0xd7, 0x19, 0x0e, 0xf8, 0x5e, 0x69, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
0x59, 0x4d, 0x06, 0x1e, 0xe0, 0x26, 0x03, 0xac, 0x3b, 0x34, 0x4d, 0xe8, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xaa,
0x7c, 0x3a, 0xfa, 0xb6, 0xdb, 0x54, 0x54, 0xf4, 0xac, 0xfa, 0xe8, 0x45, 0xaa, 0xaa, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
0x92, 0x5a, 0x4a, 0x63, 0xba, 0x98, 0x9b, 0x97, 0x97, 0x09, 0x1f, 0x77, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb2,
0xe3, 0x0e, 0x87, 0x0f, 0x99, 0x24, 0x99, 0xde, 0xb8, 0xfb, 0x3b, 0x38, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb6,
0xd0, 0x6d, 0xe4, 0x59, 0x93, 0xa1, 0x5a, 0xe4, 0xa0, 0x49, 0x8f, 0x09, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
0x4c, 0x94, 0x62, 0x0a, 0x52, 0x5a, 0xdd, 0xfc, 0xe4, 0xd8, 0x69, 0x8f, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbe,
0x75, 0xe2, 0x1a, 0x08, 0x54, 0xe5, 0xe5, 0x3d, 0xe2, 0xf3, 0xcd, 0xcf, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc2,
0xcf, 0xcf, 0x42, 0x2c, 0xf2, 0xca, 0xd5, 0x73, 0x25, 0x3d, 0x66, 0x8e, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc6,
0x85, 0x4c, 0x30, 0xae, 0x12, 0x8c, 0xbc, 0xe8, 0x13, 0xe2, 0x23, 0xf1, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9, 0xca,
0x2c, 0x35, 0xd6, 0x69, 0x36, 0xa1, 0x5a, 0x51, 0x88, 0xef, 0x3b, 0xdd, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
0x2e, 0x32, 0xd5, 0xa3, 0x2b, 0x4d, 0x6f, 0xac, 0x22, 0x7d, 0xab, 0x44, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd2,
0x15, 0xf5, 0x11, 0xad, 0x1a, 0xab, 0xa9, 0x7f, 0xb5, 0x2a, 0x17, 0xcd, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd6,
0x41, 0x6f, 0xe9, 0xd2, 0xfb, 0xf2, 0xf3, 0x57, 0x74, 0xab, 0x72, 0xa6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xda,
0x27, 0x6b, 0x8d, 0x07, 0x61, 0x95, 0x0c, 0xe9, 0x29, 0x58, 0x19, 0x49, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdd, 0xdd, 0xdd, 0xde,
0x2a, 0xec, 0x94, 0x9c, 0x69, 0x97, 0xa2, 0xa2, 0x55, 0x96, 0x4e, 0x46, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe2,
0xad, 0x9c, 0x48, 0x4a, 0x80, 0x1a, 0x1b, 0x3e, 0x19, 0xbb, 0xfc, 0xbb, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe6,
0xf6, 0xee, 0xd0, 0x0f, 0x79, 0xb9, 0xcb, 0x90, 0xbf, 0xfe, 0xfa, 0xeb, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xea,
0xe6, 0xcc, 0x99, 0x95, 0xff, 0x58, 0x26, 0x32, 0xb6, 0x71, 0x8a, 0x23, 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xee,
0x8a, 0x4f, 0x98, 0x60, 0x36, 0xc4, 0xc8, 0xe8, 0x56, 0x16, 0x81, 0x1b, 0xee, 0xee, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf2,
0x1b, 0x65, 0x7f, 0xdb, 0x98, 0x82, 0xa1, 0x66, 0x21, 0x71, 0x38, 0xa1, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf6,
0x47, 0x14, 0xad, 0x7d, 0x4a, 0x0e, 0xbd, 0x12, 0x99, 0xe2, 0xf3, 0xdd, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xfa,
0xad, 0x9b, 0x23, 0x78, 0xe2, 0xf1, 0x6c, 0x26, 0x89, 0x77, 0xb1, 0x61, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfe,
0xef, 0x07, 0x36, 0xf5, 0x67, 0x7a, 0x0c, 0xb3, 0x23, 0xdd, 0x9e, 0xd6, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xaf, 0x33, 0xef, 0x22, 0x00, 0x00, 0x00,
0x1c, 0x34, 0xed, 0x40, 0xc3, 0x27, 0x0a, 0x79, 0x82, 0x93, 0x96, 0x9a, 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00,
0x62, 0x19, 0xe5, 0x7a, 0xe5, 0xa4, 0xa4, 0xec, 0xea, 0xa8, 0xb9, 0x32, 0x00, 0x01, 0x62, 0x4b, 0x47, 0x44, 0x00, 0x88, 0x05, 0x1d, 0x48, 0x00,
0xd4, 0x72, 0x65, 0xe8, 0x67, 0x71, 0x1d, 0x6e, 0xe9, 0x6a, 0xaf, 0xf5, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x6e, 0xbd, 0x00,
0x79, 0x53, 0x78, 0x43, 0x41, 0xd4, 0x9b, 0x82, 0x0c, 0x1f, 0x01, 0x83, 0x00, 0x6e, 0xbd, 0x01, 0x84, 0x9a, 0x17, 0x68, 0x00, 0x00, 0x00, 0x07,
0x18, 0x79, 0x06, 0x8f, 0xd1, 0x4b, 0x0d, 0x86, 0x09, 0x70, 0x47, 0xcd, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xd3, 0x0a, 0x08, 0x15, 0x0b, 0x1c, 0x3a,
0x98, 0xec, 0x86, 0xd3, 0x1a, 0x24, 0x73, 0xfd, 0x0f, 0x53, 0x07, 0x2a, 0x62, 0x10, 0x70, 0x00, 0x00, 0x02, 0xa1, 0x49, 0x44, 0x41, 0x54, 0x78,
0x11, 0x4d, 0x5a, 0xba, 0xdb, 0x6b, 0x8b, 0x0a, 0x9f, 0x34, 0x9f, 0x39, 0xda, 0xed, 0x56, 0x6b, 0x8f, 0xda, 0x30, 0x10, 0xc4, 0x0d, 0x69, 0xd6,
0x14, 0x46, 0x4d, 0xe9, 0xa8, 0xd5, 0x7c, 0xae, 0x0c, 0xff, 0xdc, 0x58, 0xce, 0x03, 0x88, 0x89, 0x4b, 0xf0, 0xd1, 0xff, 0xff, 0x33, 0xbb, 0xb3,
0xf7, 0x11, 0xc3, 0x74, 0xfe, 0x8f, 0xde, 0xef, 0xd7, 0x16, 0x3e, 0x89, 0x6b, 0xc7, 0x86, 0x0f, 0x77, 0x42, 0x3a, 0x2a, 0xb5, 0x62, 0x25, 0xf0,
0x77, 0x9a, 0x87, 0x42, 0x4a, 0xce, 0xf3, 0xda, 0x02, 0x46, 0x85, 0xb4, 0xcc, 0xbe, 0xc6, 0x31, 0xc9, 0x86, 0xdd, 0xae, 0x18, 0xa9, 0xed, 0x5e,
0x57, 0x4b, 0xa4, 0xf3, 0xb0, 0xe0, 0xdc, 0xf8, 0xe3, 0x47, 0x18, 0x27, 0x6a, 0x64, 0x9c, 0x73, 0xe6, 0xd5, 0x22, 0xae, 0x69, 0x1a, 0xf7, 0x16,
0x1b, 0x46, 0x8e, 0x30, 0xb4, 0x06, 0xad, 0xe4, 0xbe, 0x84, 0xe4, 0x9e, 0x79, 0x8b, 0xfc, 0xc3, 0x22, 0xc3, 0x5f, 0x11, 0x19, 0x86, 0xd7, 0x89,
0xe8, 0x36, 0x05, 0x29, 0x2f, 0x5f, 0xaa, 0x17, 0x7e, 0xb1, 0x01, 0x1e, 0xa4, 0x81, 0x92, 0x45, 0x88, 0xca, 0x84, 0xa9, 0x97, 0x32, 0x74, 0x2a,
0x3a, 0x59, 0xe5, 0xf3, 0xce, 0xd3, 0x4b, 0x7a, 0xbd, 0xf3, 0x42, 0x27, 0x6f, 0x99, 0x45, 0x05, 0xd3, 0x7d, 0x40, 0x83, 0x98, 0x27, 0x6c, 0x83,
0xab, 0xe9, 0x08, 0x80, 0x7a, 0xc4, 0x48, 0x52, 0xcc, 0xe0, 0x6a, 0x80, 0x8a, 0x64, 0x8a, 0x11, 0x03, 0xac, 0x8b, 0x59, 0x68, 0x31, 0x69, 0xea,
0xa1, 0xb8, 0xd2, 0x1d, 0xe0, 0x2a, 0x46, 0x0a, 0x70, 0xab, 0xf8, 0xaa, 0xa8, 0x77, 0xab, 0xd3, 0x94, 0xcc, 0x4c, 0xe5, 0xdf, 0xa6, 0x14, 0xbb,
0xe6, 0xe6, 0x3c, 0x44, 0x1d, 0xa8, 0x44, 0x0c, 0x12, 0xad, 0xb0, 0xbc, 0x86, 0x62, 0x8e, 0x82, 0xd9, 0xb0, 0x11, 0xec, 0x42, 0x0c, 0x0e, 0x11,
0x39, 0x05, 0x31, 0x32, 0xa3, 0x1a, 0x23, 0xc7, 0x89, 0x18, 0x4d, 0xd0, 0x4e, 0x94, 0xd3, 0x24, 0xf5, 0x56, 0x75, 0x8e, 0xaa, 0x2e, 0x86, 0xaa,
0x81, 0x61, 0x0d, 0xfb, 0xca, 0x14, 0xa0, 0xfe, 0x48, 0xb0, 0x62, 0x6d, 0x86, 0x49, 0xa5, 0x76, 0x49, 0xab, 0xa1, 0x4e, 0x91, 0xef, 0x45, 0x0f,
0xc1, 0xe3, 0x8b, 0x17, 0x2d, 0x30, 0xfb, 0xf3, 0xda, 0x82, 0xc3, 0xa5, 0xd2, 0x69, 0x11, 0x59, 0x01, 0xe1, 0xae, 0x95, 0x54, 0xe5, 0xc3, 0x70,
0xa8, 0x71, 0xdc, 0x10, 0xb0, 0x86, 0xbd, 0x65, 0xa8, 0xd2, 0xa3, 0x89, 0xc3, 0x83, 0x4a, 0x6a, 0x9a, 0x4e, 0x2b, 0x67, 0x6c, 0x87, 0xa7, 0xc5,
0xad, 0x5e, 0x4d, 0x2c, 0x1e, 0x59, 0x41, 0x14, 0x4a, 0x41, 0x92, 0x95, 0xf8, 0x2c, 0x7a, 0x01, 0x94, 0x6e, 0x90, 0x20, 0x22, 0x9a, 0xe7, 0x28,
0x12, 0xfc, 0x46, 0xcf, 0xd7, 0xc0, 0x47, 0xc8, 0x3b, 0x8f, 0x57, 0xe4, 0x6d, 0xa0, 0xda, 0x8d, 0x56, 0xa5, 0x3b, 0x49, 0x9e, 0x8e, 0xc6, 0xf0,
0x66, 0x2f, 0x89, 0x7c, 0x5e, 0xb2, 0x97, 0x84, 0x8e, 0x57, 0x8c, 0xf6, 0x91, 0x98, 0x46, 0x9e, 0x93, 0x3b, 0xca, 0xfb, 0x6d, 0xd4, 0x4c, 0x24,
0x8b, 0xa3, 0x51, 0x3a, 0x45, 0x52, 0x80, 0xfb, 0x85, 0xe3, 0xe8, 0xb1, 0xc1, 0xbc, 0x69, 0x0d, 0x18, 0xf9, 0xf6, 0x70, 0x3a, 0xf1, 0xe1, 0xcc,
0xbc, 0x87, 0xe6, 0xcd, 0x9d, 0x73, 0xf3, 0x4d, 0x37, 0xcc, 0x99, 0x7d, 0xb4, 0x85, 0xb6, 0x5c, 0x5c, 0x93, 0x1e, 0x3c, 0xf5, 0x77, 0x81, 0x28,
0x2b, 0x62, 0x64, 0x90, 0x07, 0x1e, 0x98, 0xba, 0x3d, 0x5b, 0x50, 0x5e, 0x86, 0x0e, 0x88, 0x12, 0xa5, 0x44, 0x4d, 0xd2, 0x80, 0x0b, 0xb8, 0x5b,
0xf7, 0xed, 0x16, 0x06, 0x73, 0x72, 0xb4, 0x7f, 0xd7, 0xe8, 0x84, 0x29, 0xc4, 0x1f, 0x62, 0x97, 0xca, 0x0c, 0xb2, 0xc4, 0xb7, 0x68, 0x2f, 0x43,
0x6a, 0xd0, 0xf6, 0xd1, 0xf3, 0xbb, 0x88, 0xcc, 0x2e, 0x8d, 0xaf, 0xdf, 0x25, 0x03, 0x31, 0x16, 0xe9, 0x7e, 0xb1, 0x75, 0x91, 0x5b, 0x44, 0xc0,
0xf3, 0xae, 0x89, 0xa9, 0xdb, 0xf3, 0xae, 0xa4, 0xda, 0x5f, 0x13, 0x6e, 0x8e, 0x1e, 0x68, 0xd0, 0x84, 0x85, 0x44, 0x17, 0x10, 0x9c, 0x6f, 0xa1,
0xff, 0x14, 0x7d, 0x42, 0xc7, 0xb6, 0xeb, 0xce, 0xbc, 0x76, 0xfd, 0x9e, 0x0e, 0xde, 0xc8, 0x22, 0xc8, 0xd2, 0x24, 0x89, 0x04, 0x09, 0x71, 0x8f,
0x2d, 0xbc, 0x91, 0xcc, 0xd3, 0x38, 0xf4, 0x29, 0x7c, 0x61, 0x25, 0x1c, 0xa8, 0x4e, 0x11, 0xb9, 0xb0, 0xad, 0xd2, 0x75, 0x05, 0xa2, 0x07, 0x1a,
0x1d, 0xe0, 0x3c, 0x3d, 0x74, 0x0c, 0x6c, 0xc5, 0x2c, 0x5a, 0x7c, 0xbb, 0xb0, 0x5c, 0x2e, 0x46, 0x5c, 0xe6, 0xa2, 0xb6, 0x72, 0x27, 0x60, 0xb3,
0x37, 0xed, 0x2e, 0x38, 0x1a, 0x8e, 0x80, 0x00, 0x53, 0x45, 0x4f, 0x5a, 0x44, 0xc4, 0x3b, 0x5a, 0x73, 0x80, 0x3d, 0x24, 0x6c, 0x8d, 0xd2, 0x80,
0x39, 0xd9, 0x3f, 0x3b, 0x1d, 0xbf, 0x6d, 0x1d, 0xe9, 0xdb, 0x31, 0x7c, 0x3b, 0xe0, 0xb8, 0xae, 0x6c, 0xab, 0x9c, 0xcf, 0x0a, 0x44, 0x42, 0x79,
0x96, 0xbc, 0xaf, 0xb2, 0xae, 0xf6, 0xb5, 0xdc, 0x15, 0x8b, 0xbd, 0x0b, 0x87, 0x42, 0x6d, 0xb0, 0xd7, 0xeb, 0x96, 0xa1, 0x29, 0x70, 0x03, 0x23,
0xee, 0xf0, 0xaf, 0x58, 0x8c, 0x78, 0xf8, 0x6c, 0xe5, 0x30, 0x9f, 0xf6, 0xb2, 0xae, 0x5a, 0xa4, 0x59, 0xab, 0x5d, 0x16, 0x6b, 0x03, 0x89, 0x8f,
0xed, 0xe8, 0xf8, 0xad, 0x0c, 0xf8, 0xce, 0x23, 0x65, 0x80, 0x09, 0x3f, 0x45, 0xc4, 0x27, 0x3f, 0x7c, 0xfb, 0x93, 0xcd, 0xf2, 0x2f, 0x6d, 0x01,
0x5b, 0x79, 0x60, 0xef, 0x9b, 0x2f, 0x16, 0xe4, 0xde, 0x9b, 0x9e, 0xb2, 0x5a, 0xe1, 0xf6, 0xac, 0xb4, 0x55, 0xa7, 0x66, 0xe0, 0x52, 0x94, 0xb6,
0xd2, 0x7f, 0x3f, 0x81, 0x77, 0x8c, 0xc0, 0xfb, 0x2a, 0x81, 0xc9, 0x55, 0xf2, 0x30, 0x87, 0x36, 0xc7, 0x56, 0xc5, 0xed, 0xf9, 0x6c, 0x79, 0xb5,
0xe5, 0x23, 0xc2, 0x45, 0x07, 0xe4, 0x47, 0xa8, 0x0a, 0xad, 0x70, 0x84, 0xd2, 0xa2, 0x8d, 0xb1, 0xd5, 0x5c, 0x88, 0xd8, 0x1f, 0xb0, 0xb6, 0x6d,
0xfe, 0x91, 0x8f, 0xff, 0x82, 0x3b, 0xea, 0x6a, 0x5f, 0xe7, 0x9e, 0x23, 0x75, 0x55, 0x9e, 0xa8, 0xf5, 0x4a, 0x14, 0x73, 0x63, 0xaf, 0x50, 0x47,
0x44, 0x43, 0x8f, 0x33, 0x0d, 0x25, 0x48, 0x12, 0xd5, 0x4a, 0x9a, 0xc5, 0x86, 0xd5, 0x12, 0x14, 0x45, 0x5b, 0x12, 0x79, 0x9f, 0xf8, 0x66, 0x11,
0xcd, 0xa9, 0xe7, 0xd9, 0x4a, 0x5e, 0x5b, 0x61, 0x28, 0xdf, 0x57, 0xd9, 0x65, 0xbb, 0xa2, 0x92, 0x6c, 0xa4, 0x3e, 0xa1, 0xfd, 0x7e, 0x3f, 0xf6,
0x71, 0xa4, 0xac, 0x70, 0x75, 0x76, 0xe1, 0xea, 0x1c, 0xf4, 0xef, 0x38, 0x23, 0x5c, 0xde, 0x8f, 0xda, 0x9a, 0x0f, 0x51, 0x1c, 0x79, 0x30, 0x79,
0xb2, 0x95, 0xf3, 0x98, 0x4e, 0x8b, 0x97, 0xa9, 0xc5, 0x05, 0x0c, 0x1c, 0x3b, 0x8e, 0xda, 0x88, 0xaa, 0x2e, 0x23, 0x49, 0x52, 0x94, 0x5c, 0x66,
0xe0, 0x50, 0x83, 0xb7, 0x60, 0x32, 0xcc, 0x21, 0x59, 0x29, 0x7f, 0xfc, 0xfa, 0xc8, 0xdb, 0xfd, 0x66, 0xa3, 0x45, 0x65, 0x26, 0x3d, 0x01, 0xda,
0x6a, 0xc3, 0xd0, 0x99, 0xf2, 0xa1, 0x33, 0xdb, 0xe0, 0x83, 0x74, 0x6d, 0x18, 0x91, 0x31, 0x4e, 0x22, 0x02, 0x47, 0x35, 0x00, 0xbd, 0x84, 0xe4,
0x6f, 0x79, 0x87, 0xfc, 0x6d, 0x7e, 0x49, 0xa7, 0x02, 0xd0, 0xd6, 0xf2, 0xba, 0xc6, 0xad, 0x05, 0x10, 0x44, 0x84, 0x26, 0x91, 0x7e, 0x3a, 0x68,
0x0e, 0xe1, 0x5f, 0x19, 0x92, 0x79, 0xe0, 0xcb, 0x7b, 0x8e, 0xbe, 0x07, 0xfc, 0x30, 0xf5, 0x3e, 0x46, 0xdf, 0x2b, 0x3d, 0xf4, 0x31, 0x32, 0xcc,
0x24, 0x5c, 0xc1, 0x04, 0x12, 0x18, 0x7f, 0x56, 0x3a, 0xbf, 0x1c, 0xa4, 0xcb, 0xe4, 0x59, 0xc4, 0x73, 0xe8, 0x90, 0xfb, 0x4f, 0x38, 0x40, 0x24,
0x0c, 0xf7, 0xd4, 0x55, 0x1a, 0x13, 0x91, 0x29, 0x2b, 0x9d, 0x9a, 0x6c, 0x8f, 0x67, 0x50, 0x2d, 0x43, 0x14, 0xe0, 0xe0, 0x7d, 0xe2, 0x32, 0x83,
0x53, 0x64, 0xca, 0x01, 0x98, 0xf8, 0x63, 0x0e, 0x6c, 0xdb, 0x64, 0x9f, 0xed, 0x47, 0xb1, 0x9b, 0x58, 0x05, 0x6f, 0x09, 0xc9, 0x62, 0x69, 0x3a,
0x72, 0x8d, 0xe4, 0xb6, 0xbc, 0xb6, 0x77, 0xc1, 0xed, 0x8a, 0xa1, 0x3c, 0x1e, 0x8f, 0x13, 0x31, 0xbd, 0xdd, 0x18, 0x4f, 0x3e, 0x7a, 0x78, 0x0e,
0x6d, 0x53, 0xa3, 0x07, 0x55, 0x55, 0x3b, 0x2d, 0xd2, 0x1e, 0xe9, 0x23, 0x54, 0xca, 0x3e, 0x4a, 0xbd, 0x2e, 0xb8, 0x85, 0x7f, 0x3f, 0x63, 0x34,
0xe8, 0xa1, 0x10, 0xae, 0x49, 0x0e, 0x29, 0x29, 0x92, 0x95, 0x92, 0xd5, 0x73, 0xcb, 0x54, 0x42, 0x0c, 0xe7, 0x19, 0x0e, 0x16, 0xf9, 0xac, 0x06,
0xfc, 0xe1, 0x8b, 0xe2, 0x81, 0xde, 0xd2, 0xc1, 0xde, 0x52, 0xba, 0x96, 0xaf, 0x81, 0xa7, 0x34, 0x4e, 0xa7, 0xd3, 0x9c, 0x45, 0x4e, 0x9b, 0xcd,
0x20, 0x18, 0xec, 0xa1, 0x97, 0x3d, 0x25, 0x08, 0xf8, 0x68, 0xb0, 0xa7, 0x9f, 0x36, 0xb9, 0x7f, 0x8b, 0x7d, 0x6d, 0x10, 0x39, 0x67, 0x32, 0x65,
0xa4, 0xad, 0x79, 0x13, 0xc0, 0x6b, 0x9e, 0x59, 0x34, 0xd0, 0x53, 0x2a, 0x8d, 0xe9, 0x8b, 0xaa, 0x27, 0x5f, 0xd3, 0x13, 0x76, 0x5d, 0xd8, 0x2c,
0xf3, 0x0c, 0x20, 0xbf, 0x14, 0x7a, 0x95, 0xbd, 0xf5, 0xa7, 0x97, 0x81, 0x97, 0x31, 0x7d, 0xf3, 0xdf, 0x02, 0xee, 0x5b, 0xb5, 0xe4, 0x8b, 0x99,
0x69, 0x0b, 0x6e, 0xe6, 0x53, 0x34, 0x3c, 0xd5, 0xbc, 0xd9, 0xff, 0xe8, 0x99, 0x7f, 0xfb, 0x5f, 0x8f, 0x18, 0xe3, 0xe3, 0x3f, 0x90, 0xdd, 0xdb,
0x42, 0x7f, 0xe6, 0xc2, 0x53, 0x48, 0x8a, 0xfe, 0x25, 0x03, 0x54, 0x8e, 0xde, 0xf6, 0xb6, 0xb7, 0xfd, 0x97, 0xf6, 0x07, 0x2e, 0xfb, 0x61, 0xc1,
0xb9, 0x62, 0xf9, 0xd4, 0xdb, 0xf8, 0x0a, 0x98, 0x9c, 0xde, 0x5b, 0x8a, 0xcc, 0x44, 0x36, 0x49, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xd8, 0x33, 0x89, 0xf9, 0x33, 0xef, 0x41, 0x21, 0xfa, 0xb7, 0x35, 0xcb, 0xae, 0x42, 0x60, 0x82
0x11, 0x4c, 0x9b, 0xd7, 0x66, 0x03, 0xc0, 0x64, 0x88, 0xab, 0xb9, 0x20,
0x68, 0x00, 0x43, 0x0c, 0x45, 0x66, 0x40, 0x64, 0x36, 0x81, 0x80, 0xe0,
0x10, 0xdc, 0x24, 0xe8, 0x49, 0x05, 0x24, 0x32, 0x59, 0x29, 0x59, 0xcd,
0x7d, 0x9f, 0xad, 0x26, 0x21, 0x36, 0xb3, 0x1c, 0x03, 0x5d, 0x74, 0x55,
0xea, 0x90, 0x40, 0xeb, 0xf7, 0x55, 0xaf, 0x06, 0x32, 0xe7, 0x91, 0x34,
0x04, 0xad, 0xfb, 0xd7, 0x9b, 0xf8, 0x08, 0x6c, 0xff, 0x7a, 0xe8, 0x38,
0x7b, 0xd6, 0x8d, 0xc0, 0x6b, 0x00, 0xf0, 0xde, 0xd4, 0xd9, 0x70, 0x04,
0x0a, 0xb9, 0x19, 0xc8, 0x6d, 0x6f, 0x2c, 0x26, 0x11, 0x67, 0xf3, 0x35,
0x52, 0xd2, 0xf5, 0x2a, 0xcf, 0x8a, 0x6f, 0xcc, 0x44, 0x94, 0x74, 0xc9,
0xb7, 0xd0, 0x3c, 0xc5, 0x46, 0xc8, 0x0c, 0x50, 0x37, 0xbd, 0x08, 0x5e,
0xea, 0x45, 0x10, 0x0c, 0x48, 0xfe, 0x82, 0x0c, 0x33, 0x94, 0x7b, 0x75,
0x49, 0xe6, 0xc0, 0x4c, 0x59, 0xca, 0x82, 0x67, 0x16, 0xed, 0x2e, 0x5f,
0x78, 0xb2, 0xee, 0xf9, 0x8b, 0xad, 0xc5, 0x17, 0x5a, 0x8b, 0x2f, 0x9e,
0x2a, 0x96, 0x41, 0x6b, 0x31, 0x92, 0x38, 0x02, 0x20, 0x67, 0x79, 0x8a,
0x77, 0xfe, 0xac, 0xb4, 0xf9, 0xb3, 0x10, 0x40, 0xaf, 0x93, 0xf5, 0xcf,
0x5f, 0x20, 0x8c, 0xf4, 0x53, 0x02, 0x89, 0x3c, 0x00, 0x80, 0x15, 0x10,
0x80, 0xcb, 0x0b, 0x28, 0x09, 0x5f, 0x63, 0x24, 0xa1, 0x23, 0xfa, 0x08,
0x11, 0xe7, 0x8b, 0xc7, 0x1a, 0xc4, 0x34, 0x7d, 0xdd, 0x45, 0xea, 0x13,
0x5b, 0xbb, 0xe5, 0x29, 0xdb, 0x4b, 0xfd, 0x5c, 0xc5, 0x26, 0xa6, 0xd4,
0x49, 0x1a, 0x58, 0x7b, 0xe3, 0x4b, 0x0f, 0x9a, 0x60, 0x35, 0x6e, 0xdd,
0x05, 0x63, 0x17, 0x0d, 0xd0, 0x85, 0xcc, 0x1c, 0x78, 0xe6, 0x40, 0xc8,
0x75, 0xbc, 0x3e, 0xe3, 0x93, 0xbd, 0x57, 0xc2, 0x02, 0x15, 0x15, 0xf6,
0xaf, 0xbf, 0xc6, 0x77, 0x6b, 0xf7, 0xee, 0x71, 0x9e, 0x10, 0x60, 0x62,
0xe2, 0x24, 0x31, 0x1d, 0x1c, 0xbe, 0xfb, 0x38, 0xe7, 0xcf, 0xa3, 0xab,
0xfe, 0x22, 0xff, 0xee, 0x63, 0x3f, 0x32, 0x1a, 0xcc, 0x01, 0x63, 0xe8,
0x34, 0x27, 0x3b, 0xe3, 0xce, 0xb4, 0xbb, 0x6f, 0xc9, 0xc9, 0xb8, 0x93,
0x33, 0xec, 0xbc, 0x76, 0x7c, 0x92, 0x26, 0x93, 0x98, 0xf9, 0x89, 0xc9,
0x64, 0x1f, 0x86, 0x36, 0xce, 0x9d, 0xfb, 0xa9, 0xcf, 0xf7, 0x7d, 0x7a,
0xfa, 0x0c, 0x3a, 0x08, 0x80, 0xc9, 0xf1, 0xdd, 0x59, 0xe7, 0x7f, 0x59,
0x29, 0xfc, 0xf0, 0x4a, 0xbc, 0x8c, 0x89, 0xc1, 0xd1, 0x9f, 0x87, 0x05,
0x00, 0xe0, 0xe3, 0xdf, 0x64, 0x89, 0x92, 0xc3, 0xb2, 0x04, 0x79, 0x96,
0xd2, 0x59, 0x62, 0xef, 0xa7, 0xa6, 0xf2, 0xa7, 0x2d, 0xb1, 0x94, 0x30,
0xa0, 0x51, 0x33, 0x83, 0x0e, 0x0e, 0xc7, 0xbe, 0x7e, 0xa0, 0x3f, 0xb8,
0xec, 0x5c, 0x73, 0x46, 0x7f, 0x73, 0xc6, 0xd1, 0xaf, 0xc5, 0x97, 0x34,
0x26, 0xac, 0x3f, 0x98, 0x01, 0x58, 0x7f, 0xf3, 0x32, 0x0a, 0x84, 0x9f,
0x43, 0x55, 0x50, 0x54, 0x21, 0x46, 0x93, 0x98, 0x85, 0xff, 0xd0, 0xf1,
0x69, 0x4b, 0x2c, 0xa5, 0x9d, 0xc4, 0x7f, 0x92, 0xaf, 0x8e, 0x1d, 0xfd,
0x72, 0xd1, 0xb9, 0xa6, 0x25, 0xec, 0x25, 0x1b, 0x52, 0x26, 0x83, 0xe1,
0x96, 0xad, 0x61, 0xe3, 0x1c, 0x47, 0xff, 0x2a, 0xc3, 0x64, 0xff, 0xec,
0xcc, 0xac, 0x99, 0x1a, 0x41, 0x53, 0x8f, 0xc7, 0x13, 0x1f, 0x69, 0xea,
0xce, 0x25, 0xac, 0xe3, 0x55, 0xe5, 0x3c, 0xd3, 0xa2, 0x4d, 0xce, 0x4c,
0x69, 0x94, 0x50, 0x14, 0xfd, 0xf1, 0x04, 0x58, 0xe3, 0xaf, 0xb2, 0x8e,
0xf6, 0xb5, 0x2c, 0x25, 0x2c, 0x6d, 0xde, 0x8d, 0xec, 0x49, 0x6d, 0x32,
0xf9, 0x57, 0xef, 0xea, 0xd8, 0x35, 0x2d, 0xe5, 0x7f, 0xcb, 0x5c, 0x29,
0x1d, 0x33, 0x57, 0x4a, 0xc7, 0xcc, 0x95, 0xd2, 0x31, 0x73, 0xa5, 0x74,
0xcc, 0x5c, 0x29, 0x1d, 0x33, 0x57, 0x4a, 0xc7, 0xcc, 0x95, 0xd2, 0x31,
0x73, 0xa5, 0x74, 0xcc, 0x5c, 0x29, 0x1d, 0x33, 0x57, 0x4a, 0xc7, 0xcc,
0x95, 0xd2, 0x31, 0x73, 0xa5, 0x74, 0xcc, 0x5c, 0x29, 0x1d, 0x33, 0x57,
0x4a, 0xc7, 0xcc, 0x95, 0xd2, 0x31, 0x73, 0xa5, 0x74, 0xcc, 0xfe, 0x06,
0xbe, 0x63, 0xe9, 0x2a, 0x3a, 0x4d, 0xca, 0xc2, 0x00, 0x00, 0x00, 0x43,
0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65,
0x00, 0x40, 0x28, 0x23, 0x29, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x61,
0x67, 0x69, 0x63, 0x6b, 0x20, 0x34, 0x2e, 0x32, 0x2e, 0x37, 0x20, 0x39,
0x39, 0x2f, 0x30, 0x37, 0x2f, 0x30, 0x31, 0x20, 0x63, 0x72, 0x69, 0x73,
0x74, 0x79, 0x40, 0x6d, 0x79, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x65, 0x73,
0x2e, 0x64, 0x75, 0x70, 0x6f, 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6b,
0x02, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x2a, 0x74, 0x45, 0x58, 0x74, 0x53,
0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x00, 0x35, 0x34, 0x36,
0x33, 0x61, 0x37, 0x38, 0x35, 0x62, 0x62, 0x31, 0x31, 0x64, 0x33, 0x36,
0x37, 0x30, 0x32, 0x32, 0x37, 0x30, 0x31, 0x63, 0x37, 0x37, 0x65, 0x62,
0x65, 0x38, 0x31, 0x61, 0x62, 0x12, 0xbe, 0x63, 0xf7, 0x00, 0x00, 0x00,
0x0f, 0x74, 0x45, 0x58, 0x74, 0x50, 0x61, 0x67, 0x65, 0x00, 0x31, 0x31,
0x30, 0x78, 0x35, 0x33, 0x2b, 0x30, 0x2b, 0x30, 0xbb, 0x45, 0xd1, 0x42,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
}; };
unsigned int doxygen_png_len = 2352; unsigned int doxygen_png_len = 1576;
unsigned char search_png[] = { unsigned char search_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
......
...@@ -1739,14 +1739,14 @@ void MemberDef::warnIfUndocumented() ...@@ -1739,14 +1739,14 @@ void MemberDef::warnIfUndocumented()
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n", // "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(), // d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot); // name().data(),prot);
if (/*d && d->isLinkable() &&*/ !isLinkable() && if (!isLinkable() &&
!isDocumentedFriendClass() && !isDocumentedFriendClass() &&
name().find('@')==-1 && name().find('@')==-1 && d->name().find('@')==-1 &&
(prot!=Private || Config_getBool("EXTRACT_PRIVATE")) (prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
) )
{ {
warn_undoc(m_defFileName,m_defLine,"Warning: Member %s%s of %s %s is not documented.", warn_undoc(m_defFileName,m_defLine,"Warning: Member %s%s of %s %s is not documented.",
name().data(),argsString()?argsString():"",t,d->name().data()); name().data(),argsString()?argsString():"",t,d->name().data());
} }
} }
......
...@@ -1669,7 +1669,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1669,7 +1669,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
BEGIN(SkipCComment); BEGIN(SkipCComment);
} }
<SkipCComment,SkipVerbatim>[^*\n\/]+ { <SkipCComment,SkipVerbatim>[^*\x06\n\/]+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
<SkipCComment,SkipVerbatim>\n { <SkipCComment,SkipVerbatim>\n {
...@@ -1682,7 +1682,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1682,7 +1682,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<RemoveCComment>"*/" { BEGIN(g_lastCContext); } <RemoveCComment>"*/" { BEGIN(g_lastCContext); }
<RemoveCComment>"//" <RemoveCComment>"//"
<RemoveCComment>"/*" <RemoveCComment>"/*"
<RemoveCComment>[^*\n]+ <RemoveCComment>[^*\x06\n]+
<RemoveCComment>\n { g_yyLineNr++; outputChar('\n'); } <RemoveCComment>\n { g_yyLineNr++; outputChar('\n'); }
<RemoveCComment>. <RemoveCComment>.
<SkipCPPComment,RemoveCPPComment>\n { <SkipCPPComment,RemoveCPPComment>\n {
...@@ -1695,7 +1695,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1695,7 +1695,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCPPComment>"//" { <SkipCPPComment>"//" {
outputChar('/');outputChar('/'); outputChar('/');outputChar('/');
} }
<SkipCPPComment>[^\n]+ { <SkipCPPComment>[^\x06\n]+ {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
} }
<SkipCPPComment>. { <SkipCPPComment>. {
...@@ -1703,7 +1703,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1703,7 +1703,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<RemoveCPPComment>"/*" <RemoveCPPComment>"/*"
<RemoveCPPComment>"//" <RemoveCPPComment>"//"
<RemoveCPPComment>[^\n]+ <RemoveCPPComment>[^\x06\n]+
<RemoveCPPComment>. <RemoveCPPComment>.
<DefineText>"#" { <DefineText>"#" {
g_quoteArg=TRUE; g_quoteArg=TRUE;
......
...@@ -74,7 +74,7 @@ function search($file,$word,&$statsList) ...@@ -74,7 +74,7 @@ function search($file,$word,&$statsList)
$freq=readInt($file); $freq=readInt($file);
$docInfo[$i]=array("idx"=>$idx,"freq"=>$freq,"rank"=>0.0); $docInfo[$i]=array("idx"=>$idx,"freq"=>$freq,"rank"=>0.0);
$totalFreq+=$freq; $totalFreq+=$freq;
if ($statInfo["full"]) $totalfreq+=$freq; if ($statInfo["full"]) $totalFreq+=$freq;
} }
// read name an url info for the doc // read name an url info for the doc
for ($i=0;$i<$numDocs;$i++) for ($i=0;$i<$numDocs;$i++)
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
" $freq=readInt($file); \n" " $freq=readInt($file); \n"
" $docInfo[$i]=array(\"idx\"=>$idx,\"freq\"=>$freq,\"rank\"=>0.0);\n" " $docInfo[$i]=array(\"idx\"=>$idx,\"freq\"=>$freq,\"rank\"=>0.0);\n"
" $totalFreq+=$freq;\n" " $totalFreq+=$freq;\n"
" if ($statInfo[\"full\"]) $totalfreq+=$freq;\n" " if ($statInfo[\"full\"]) $totalFreq+=$freq;\n"
" }\n" " }\n"
" // read name an url info for the doc\n" " // read name an url info for the doc\n"
" for ($i=0;$i<$numDocs;$i++)\n" " for ($i=0;$i<$numDocs;$i++)\n"
......
...@@ -69,9 +69,9 @@ void SearchIndex::setCurrentDoc(const char *name,const char *url) ...@@ -69,9 +69,9 @@ void SearchIndex::setCurrentDoc(const char *name,const char *url)
static int charsToIndex(const char *word) static int charsToIndex(const char *word)
{ {
if (word==0) return -1; if (word==0) return -1;
int c1=word[0]; uint c1=word[0];
if (c1==0) return -1; if (c1==0) return -1;
int c2=word[1]; uint c2=word[1];
if (c2==0) return -1; if (c2==0) return -1;
return c1*256+c2; return c1*256+c2;
} }
...@@ -82,7 +82,7 @@ void SearchIndex::addWord(const char *word) ...@@ -82,7 +82,7 @@ void SearchIndex::addWord(const char *word)
if (w==0) if (w==0)
{ {
int idx=charsToIndex(word); int idx=charsToIndex(word);
if (idx==-1) return; if (idx<0) return;
w = new IndexWord(word); w = new IndexWord(word);
//printf("addWord(%s) at index %d\n",word,idx); //printf("addWord(%s) at index %d\n",word,idx);
m_index[idx]->append(w); m_index[idx]->append(w);
......
/****************************************************************************** /******************************************************************************
* *
* *
* *
* Copyright (C) 1997-2002 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty. * for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details. * See the GNU General Public License for more details.
* *
...@@ -15,6 +15,14 @@ ...@@ -15,6 +15,14 @@
* *
*/ */
/*
초기 작업자: ryk
TODO 주석을 보면 11/22/01, doxygen 버전 1.2.11까지 수고해 주신 것 같습니다.
최근 갱신자: Astromaker(http://ngps.net/)
gpgiki(http://www.gpgstudy.com/gpgiki/)
*/
#ifndef TRANSLATOR_KR_H #ifndef TRANSLATOR_KR_H
#define TRANSLATOR_KR_H #define TRANSLATOR_KR_H
...@@ -23,19 +31,19 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -23,19 +31,19 @@ class TranslatorKorean : public TranslatorAdapter_1_3
public: public:
// --- Language control methods ------------------- // --- Language control methods -------------------
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
* should not be translated. It should be replaced by the name * should not be translated. It should be replaced by the name
* of the language in English using lower-case characters only * of the language in English using lower-case characters only
* (e.g. "czech", "japanese", "russian", etc.). It should be equal to * (e.g. "czech", "japanese", "russian", etc.). It should be equal to
* the identification used in language.cpp. * the identification used in language.cpp.
*/ */
virtual QCString idLanguage() virtual QCString idLanguage()
{ return "korean"; } { return "korean"; }
/*! Used to get the LaTeX command(s) for the language support. /*! Used to get the LaTeX command(s) for the language support.
* This method should return string with commands that switch * This method should return string with commands that switch
* LaTeX to the desired language. For example * LaTeX to the desired language. For example
* <pre>"\\usepackage[german]{babel}\n" * <pre>"\\usepackage[german]{babel}\n"
* </pre> * </pre>
* or * or
...@@ -43,7 +51,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -43,7 +51,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
* "\\usepackage[latin2]{inputenc}\n" * "\\usepackage[latin2]{inputenc}\n"
* "\\usepackage[T1]{fontenc}\n" * "\\usepackage[T1]{fontenc}\n"
* </pre> * </pre>
* *
* The English LaTeX does not use such commands. Because of this * The English LaTeX does not use such commands. Because of this
* the empty string is returned in this implementation. * the empty string is returned in this implementation.
*/ */
...@@ -51,7 +59,8 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -51,7 +59,8 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
// I'm not sure what this should be. // I'm not sure what this should be.
// When I figure it out, I'll update this. // When I figure it out, I'll update this.
return ""; //see http://www.ktug.or.kr/jsboard/read.php?table=operate&no=4422&page=1
return "\\usepackage{hfont}\n";
} }
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
...@@ -77,26 +86,25 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -77,26 +86,25 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! header that is put before the list of typedefs. */ /*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation() virtual QCString trMemberTypedefDocumentation()
{ return "멤버 타입정의 문서화"; } { return "멤버 타입정의 문서화"; }
/*! header that is put before the list of enumerations. */ /*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation() virtual QCString trMemberEnumerationDocumentation()
{ return "멤버 열거형 문서화"; } { return "멤버 열거형 문서화"; }
/*! header that is put before the list of member functions. */ /*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation() virtual QCString trMemberFunctionDocumentation()
{ return "멤버 함수 문서화"; } { return "멤버 함수 문서화"; }
/*! header that is put before the list of member attributes. */ /*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation() virtual QCString trMemberDataDocumentation()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
// TODO: This need to be translated. -ryk11/22/01. return "멤버 변수 문서화";
return "멤버 변수 문서화";
} }
else else
{ {
return "멤버 변수 문서화"; return "멤버 변수 문서화";
} }
} }
...@@ -119,7 +127,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -119,7 +127,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! this is the remainder of the sentence after the class name */ /*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers() virtual QCString trIncludingInheritedMembers()
{ return ", 상속받은 모든 멤버도 포함"; } { return ", 상속받은 모든 멤버도 포함"; }
/*! this is put at the author sections at the bottom of man pages. /*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name. * parameter s is name of the project name.
*/ */
...@@ -133,27 +141,27 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -133,27 +141,27 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! put after an enum name in the list of all members */ /*! put after an enum name in the list of all members */
virtual QCString trEnumName() virtual QCString trEnumName()
{ return "열거형 이름"; } { return "열거형 이름"; }
/*! put after an enum value in the list of all members */ /*! put after an enum value in the list of all members */
virtual QCString trEnumValue() virtual QCString trEnumValue()
{ return "열거형 값"; } { return "열거형 값"; }
/*! put after an undocumented member in the list of all members */ /*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn() virtual QCString trDefinedIn()
{ return "에서 정의"; } { return "에서 정의"; }
// quick reference sections // quick reference sections
/*! This is put above each page as a link to the list of all groups of /*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \\group command). * compounds or files (see the \\group command).
*/ */
virtual QCString trModules() virtual QCString trModules()
{ return "모듈"; } { return "모듈"; }
/*! This is put above each page as a link to the class hierarchy */ /*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy() virtual QCString trClassHierarchy()
{ return "클래스 계통도"; } // "클래스 조직" or "클래스 분류체계" { return "클래스 계통도"; } // "클래스 조직" or "클래스 분류체계"
/*! This is put above each page as a link to the list of annotated classes */ /*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList() virtual QCString trCompoundList()
{ {
...@@ -164,11 +172,10 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -164,11 +172,10 @@ class TranslatorKorean : public TranslatorAdapter_1_3
} }
else else
{ {
//TODO: This needs to be translated. -ryk11/22/01.
return "복합구조(클래스, 구조체, 공용체)"; return "복합구조(클래스, 구조체, 공용체)";
} }
} }
/*! This is put above each page as a link to the list of documented files */ /*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList() virtual QCString trFileList()
{ return "파일 목록"; } //"파일 목록", "파일 리스트" { return "파일 목록"; } //"파일 목록", "파일 리스트"
...@@ -182,7 +189,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -182,7 +189,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
// TODO: This need to be translated. -ryk11/22/01.
return "복합구조(클래스, 구조체, 공용체) 멤버"; return "복합구조(클래스, 구조체, 공용체) 멤버";
} }
else else
...@@ -197,7 +203,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -197,7 +203,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
// TODO: This needs to be translated. -ryk11/22/01.
return "파일 멤버"; return "파일 멤버";
} }
else else
...@@ -236,7 +241,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -236,7 +241,6 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
// TODO: This needs to be translated. -ryk11/22/01.
return "다음은 간략한 설명을 가진 클래스, " return "다음은 간략한 설명을 가진 클래스, "
"구조체, 공용체, 인터페이스의 목록입니다."; "구조체, 공용체, 인터페이스의 목록입니다.";
} }
...@@ -257,17 +261,16 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -257,17 +261,16 @@ class TranslatorKorean : public TranslatorAdapter_1_3
} }
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
// TODO: This need to be translated. -ryk11/22/01.
result+="링크 된 클래스 멤버는 "; result+="링크 된 클래스 멤버는 ";
} }
else else
{ {
result+="링크 된 클래스 멤버는 "; result+="링크 된 클래스 멤버는 ";
} }
if (extractAll) if (extractAll)
result+="그 멤버에 대한 클래스 문서화로 갑니다."; result+="그 멤버에 대한 클래스 문서화로 갑니다.";
else else
result+="이하로 속한 클래스:"; result+="이하로 속한 클래스:";
return result; return result;
} }
...@@ -277,9 +280,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -277,9 +280,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3
QCString result="다음은 문서화된 모든 파일에 대한 목록입니다. "; QCString result="다음은 문서화된 모든 파일에 대한 목록입니다. ";
if (!extractAll) result+="문서화된 "; if (!extractAll) result+="문서화된 ";
result+="링크 된 파일 멤버는 "; result+="링크 된 파일 멤버는 ";
if (extractAll) if (extractAll)
result+="그 멤버에 대한 파일 문서화로 갑니다."; result+="그 멤버에 대한 파일 문서화로 갑니다.";
else else
result+="그들이 속해있는 파일로 갑니다."; result+="그들이 속해있는 파일로 갑니다.";
return result; return result;
} }
...@@ -301,31 +304,31 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -301,31 +304,31 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ return "다음은 모든 모듈의 목록입니다."; } { return "다음은 모든 모듈의 목록입니다."; }
/*! This sentences is used in the annotated class/file lists if no brief /*! This sentences is used in the annotated class/file lists if no brief
* description is given. * description is given.
*/ */
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
{ return "유용한 설명이 없습니다."; } { return "유용한 설명이 없습니다."; }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */ /*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation() virtual QCString trDocumentation()
{ return "문서화"; } { return "문서화"; }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* index of all groups. * index of all groups.
*/ */
virtual QCString trModuleIndex() virtual QCString trModuleIndex()
{ return "모듈 색인"; } { return "모듈 색인"; }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* class hierarchy. * class hierarchy.
*/ */
virtual QCString trHierarchicalIndex() virtual QCString trHierarchicalIndex()
{ return "분류체계 색인"; } { return "분류체계 색인"; }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* annotated compound index. * annotated compound index.
*/ */
virtual QCString trCompoundIndex() virtual QCString trCompoundIndex()
...@@ -334,7 +337,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -334,7 +337,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* list of all files. * list of all files.
*/ */
virtual QCString trFileIndex() virtual QCString trFileIndex()
{ return "파일 색인"; } { return "파일 색인"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
...@@ -370,102 +373,102 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -370,102 +373,102 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! This is used in LaTeX as the title of the document */ /*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual() virtual QCString trReferenceManual()
{ return "참고서"; } { return "참고서"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of defines * list of defines
*/ */
virtual QCString trDefines() virtual QCString trDefines()
{ return "매크로, #define"; } { return "매크로, #define"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of function prototypes * list of function prototypes
*/ */
virtual QCString trFuncProtos() virtual QCString trFuncProtos()
{ return "함수 원형"; } { return "함수 원형"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of typedefs * list of typedefs
*/ */
virtual QCString trTypedefs() virtual QCString trTypedefs()
{ return "타입 정의"; } { return "타입 정의"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of enumerations * list of enumerations
*/ */
virtual QCString trEnumerations() virtual QCString trEnumerations()
{ return "열거형"; } { return "열거형"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) functions * list of (global) functions
*/ */
virtual QCString trFunctions() virtual QCString trFunctions()
{ return "함수"; } { return "함수"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
virtual QCString trVariables() virtual QCString trVariables()
{ return "변수"; } { return "변수"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
virtual QCString trEnumerationValues() virtual QCString trEnumerationValues()
{ return "열거형 값"; } { return "열거형 값"; }
/*! This is used in the documentation of a file before the list of /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
virtual QCString trDefineDocumentation() virtual QCString trDefineDocumentation()
{ return "#define 문서화"; } { return "#define 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes * of documentation blocks for function prototypes
*/ */
virtual QCString trFunctionPrototypeDocumentation() virtual QCString trFunctionPrototypeDocumentation()
{ return "함수 원형 문서화"; } { return "함수 원형 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs * of documentation blocks for typedefs
*/ */
virtual QCString trTypedefDocumentation() virtual QCString trTypedefDocumentation()
{ return "타입 정의 문서화"; } { return "타입 정의 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types * of documentation blocks for enumeration types
*/ */
virtual QCString trEnumerationTypeDocumentation() virtual QCString trEnumerationTypeDocumentation()
{ return "열거형 타입 문서화"; } { return "열거형 타입 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values * of documentation blocks for enumeration values
*/ */
virtual QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
{ return "열거형 값 문서화"; } { return "열거형 값 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions * of documentation blocks for functions
*/ */
virtual QCString trFunctionDocumentation() virtual QCString trFunctionDocumentation()
{ return "함수 문서화"; } { return "함수 문서화"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables * of documentation blocks for variables
*/ */
virtual QCString trVariableDocumentation() virtual QCString trVariableDocumentation()
{ return "변수 문서화"; } { return "변수 문서화"; }
/*! This is used in the documentation of a file/namespace/group before /*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds * the list of links to documented compounds
*/ */
virtual QCString trCompounds() virtual QCString trCompounds()
{ return "복합구조"; } { return "복합구조"; }
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
virtual QCString trGeneratedAt(const char *date,const char *projName) virtual QCString trGeneratedAt(const char *date,const char *projName)
{ {
QCString result=""; QCString result="";
if (projName) result+=(QCString)projName+" 문서화. "; if (projName) result+=(QCString)projName+" 문서화. ";
result += "생성일시 : " +(QCString)date+" by"; result += "생성일시 : " +(QCString)date+" by";
...@@ -483,7 +486,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -483,7 +486,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
return (QCString)clName+"에 대한 상속 도표"; return (QCString)clName+"에 대한 상속 도표";
} }
/*! this text is generated when the \\internal command is used. */ /*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return "내부 사용만을 위해"; } { return "내부 사용만을 위해"; }
...@@ -523,7 +526,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -523,7 +526,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! this text is generated when the \\exception command is used. */ /*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions() virtual QCString trExceptions()
{ return "예외"; } { return "예외"; }
/*! this text is used in the title page of a LaTeX document. */ /*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy() virtual QCString trGeneratedBy()
{ return "에 의해 생성된"; } { return "에 의해 생성된"; }
...@@ -531,7 +534,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -531,7 +534,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990307 // new since 0.49-990307
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */ /*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList() virtual QCString trNamespaceList()
{ return "namespace 목록"; } { return "namespace 목록"; }
...@@ -550,17 +553,17 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -550,17 +553,17 @@ class TranslatorKorean : public TranslatorAdapter_1_3
*/ */
virtual QCString trFriends() virtual QCString trFriends()
{ return "friend"; } { return "friend"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990405 // new since 0.49-990405
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all /*! used in the class documentation as a header before the list of all
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "friend, 그리고 관련된 함수 문서화"; } { return "friend, 그리고 관련된 함수 문서화"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -588,7 +591,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -588,7 +591,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
virtual QCString trFileReference(const char *fileName) virtual QCString trFileReference(const char *fileName)
{ {
QCString result=fileName; QCString result=fileName;
result+=" 파일 참조"; result+=" 파일 참조";
return result; return result;
} }
...@@ -599,7 +602,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -599,7 +602,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
result+=" namespace 참조"; result+=" namespace 참조";
return result; return result;
} }
virtual QCString trPublicMembers() virtual QCString trPublicMembers()
{ return "public 메소드"; } { return "public 메소드"; }
virtual QCString trPublicSlots() virtual QCString trPublicSlots()
...@@ -620,7 +623,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -620,7 +623,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ return "private slots"; } { return "private slots"; }
virtual QCString trStaticPrivateMembers() virtual QCString trStaticPrivateMembers()
{ return "static private 메소드"; } { return "static private 메소드"; }
/*! this function is used to produce a comma-separated list of items. /*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put. * use generateMarker(i) to indicate where item i should be put.
*/ */
...@@ -629,23 +632,23 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -629,23 +632,23 @@ class TranslatorKorean : public TranslatorAdapter_1_3
QCString result; QCString result;
int i; int i;
// the inherits list contain `numEntries' classes // the inherits list contain `numEntries' classes
for (i=0;i<numEntries;i++) for (i=0;i<numEntries;i++)
{ {
// use generateMarker to generate placeholders for the class links! // use generateMarker to generate placeholders for the class links!
result+=generateMarker(i); // generate marker for entry i in the list result+=generateMarker(i); // generate marker for entry i in the list
// (order is left to right) // (order is left to right)
if (i!=numEntries-1) // not the last entry, so we need a separator if (i!=numEntries-1) // not the last entry, so we need a separator
{ {
if (i<numEntries-2) // not the fore last entry if (i<numEntries-2) // not the fore last entry
result+=", "; result+=", ";
else // the fore last entry else // the fore last entry
result+=", 과 "; result+=", 과 ";
} }
} }
return result; return result;
} }
/*! used in class documentation to produce a list of base classes, /*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled. * if class diagrams are disabled.
*/ */
...@@ -662,7 +665,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -662,7 +665,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
return trWriteList(numEntries)+"에 의해 상속되었습니다."; return trWriteList(numEntries)+"에 의해 상속되었습니다.";
} }
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are hidden by this one. * members that are hidden by this one.
*/ */
virtual QCString trReimplementedFromList(int numEntries) virtual QCString trReimplementedFromList(int numEntries)
...@@ -688,14 +691,14 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -688,14 +691,14 @@ class TranslatorKorean : public TranslatorAdapter_1_3
QCString result="다음은 모든 "; QCString result="다음은 모든 ";
if (!extractAll) result+="문서화된 "; if (!extractAll) result+="문서화된 ";
result+="namespace 멤버의 목록입니다. "; result+="namespace 멤버의 목록입니다. ";
if (extractAll) if (extractAll)
result+="각 멤버에 대한 문서화의 "; result+="각 멤버에 대한 문서화의 ";
else else
result+="속해있는 namespace의 "; result+="속해있는 namespace의 ";
result+="링크도 있습니다."; result+="링크도 있습니다.";
return result; return result;
} }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces. * index of all namespaces.
*/ */
virtual QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
...@@ -762,7 +765,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -762,7 +765,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
virtual QCString trMainPage() virtual QCString trMainPage()
{ return "메인 페이지"; } { return "메인 페이지"; }
/*! This is used in references to page that are put in the LaTeX /*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page. * documentation. It should be an abbreviation of the word page.
*/ */
virtual QCString trPageAbbreviation() virtual QCString trPageAbbreviation()
...@@ -811,7 +814,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -811,7 +814,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! header that is put before the list of constructor/destructors. */ /*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation() virtual QCString trConstructorDocumentation()
{ {
return "생성자 & 소멸자 문서화"; return "생성자 & 소멸자 문서화";
} }
/*! Used in the file documentation to point to the corresponding sources. */ /*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode() virtual QCString trGotoSourceCode()
...@@ -841,7 +844,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -841,7 +844,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! Text shown before a multi-line variable/enum initialization */ /*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue() virtual QCString trInitialValue()
{ {
return "초기화기"; return "초기";
} }
/*! Text used the source code in the file index */ /*! Text used the source code in the file index */
virtual QCString trCode() virtual QCString trCode()
...@@ -868,53 +871,53 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -868,53 +871,53 @@ class TranslatorKorean : public TranslatorAdapter_1_3
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.1.0 // new since 1.1.0
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trNote() virtual QCString trNote()
{ {
return "노트"; // TODO: Need to be translated. -ryk11/22/01. return "노트";
} }
virtual QCString trPublicTypes() virtual QCString trPublicTypes()
{ {
return "public 타입"; // TODO: Need to be translated. -ryk11/22/01. return "public 타입";
} }
virtual QCString trPublicAttribs() virtual QCString trPublicAttribs()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "Data 필드"; // TODO: Need to be translated. -ryk11/22/01. return "Data 필드";
} }
else else
{ {
return "public 속성"; // TODO: Need to be translated. -ryk11/22/01. return "public 속성";
} }
} }
virtual QCString trStaticPublicAttribs() virtual QCString trStaticPublicAttribs()
{ {
return "static public 속성"; // TODO: Need to be translated. -ryk11/22/01. return "static public 속성";
} }
virtual QCString trProtectedTypes() virtual QCString trProtectedTypes()
{ {
return "protected 타입"; // TODO: Need to be translated. -ryk11/22/01. return "protected 타입";
} }
virtual QCString trProtectedAttribs() virtual QCString trProtectedAttribs()
{ {
return "protected 속성"; // TODO: Need to be translated. -ryk11/22/01. return "protected 속성";
} }
virtual QCString trStaticProtectedAttribs() virtual QCString trStaticProtectedAttribs()
{ {
return "static protected 속성"; // TODO: Need to be translated. -ryk11/22/01. return "static protected 속성";
} }
virtual QCString trPrivateTypes() virtual QCString trPrivateTypes()
{ {
return "private 타입"; // TODO: Need to be translated. -ryk11/22/01. return "private 타입";
} }
virtual QCString trPrivateAttribs() virtual QCString trPrivateAttribs()
{ {
return "private 속성"; // TODO: Need to be translated. -ryk11/22/01. return "private 속성";
} }
virtual QCString trStaticPrivateAttribs() virtual QCString trStaticPrivateAttribs()
{ {
return "static private 속성"; // TODO: Need to be translated. -ryk11/22/01. return "static private 속성";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -924,12 +927,12 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -924,12 +927,12 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! Used as a marker that is put before a \\todo item */ /*! Used as a marker that is put before a \\todo item */
virtual QCString trTodo() virtual QCString trTodo()
{ {
return "Todo"; // TODO: Need to be translated. -ryk11/22/01. return "Todo";
} }
/*! Used as the header of the todo list */ /*! Used as the header of the todo list */
virtual QCString trTodoList() virtual QCString trTodoList()
{ {
return "Todo 목록"; // TODO: Need to be translated. -ryk11/22/01. return "Todo 목록";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -938,15 +941,15 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -938,15 +941,15 @@ class TranslatorKorean : public TranslatorAdapter_1_3
virtual QCString trReferencedBy() virtual QCString trReferencedBy()
{ {
return "참조하는 곳"; // TODO: Need to be translated. -ryk11/22/01. return "참조하는 곳";
} }
virtual QCString trRemarks() virtual QCString trRemarks()
{ {
return "설명"; // TODO: Need to be translated. -ryk11/22/01. return "설명";
} }
virtual QCString trAttention() virtual QCString trAttention()
{ {
return "주의"; // TODO: Need to be translated. -ryk11/22/01. return "주의";
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
...@@ -958,7 +961,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -958,7 +961,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
return "Since"; // TODO: Need to be translated. -ryk11/22/01. return "Since"; // TODO: Need to be translated. -ryk11/22/01.
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.1.5 // new since 1.1.5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -966,9 +969,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -966,9 +969,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! title of the graph legend page */ /*! title of the graph legend page */
virtual QCString trLegendTitle() virtual QCString trLegendTitle()
{ {
return "그래프 설명"; // TODO: Need to be translated. -ryk11/22/01. return "범례";
} }
/*! page explaining how the dot graph's should be interpreted /*! page explaining how the dot graph's should be interpreted
* The %A in the text below are to prevent link to classes called "A". * The %A in the text below are to prevent link to classes called "A".
*/ */
virtual QCString trLegendDocs() virtual QCString trLegendDocs()
...@@ -1013,7 +1016,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1013,7 +1016,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
//"is set to 240 this will result in the following graph:" //"is set to 240 this will result in the following graph:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n" "<p>\n"
"박스에는 다음을 뜻한다.\n" "상자들은 다음을 뜻한다.\n"
//"The boxes in the above graph have the following meaning:\n" //"The boxes in the above graph have the following meaning:\n"
"<ul>\n" "<ul>\n"
"<li>%검은 상자는 그래프를 산출한 구조체나 클래스를 말한다.\n" "<li>%검은 상자는 그래프를 산출한 구조체나 클래스를 말한다.\n"
...@@ -1045,7 +1048,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1045,7 +1048,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
//"by another class. The arrow is labeled with the variable(s) " //"by another class. The arrow is labeled with the variable(s) "
//"through which the pointed class or struct is accessible.\n" //"through which the pointed class or struct is accessible.\n"
"<li>%밝은 노랑색 화살표는 템플릿 인스턴스와 템플릿 클래스를 나타낸다. " "<li>%밝은 노랑색 화살표는 템플릿 인스턴스와 템플릿 클래스를 나타낸다. "
"이 화살표의 라벨은 그 인스턴스의 템플릿 매개변수를 나타낸다.\n" "이 화살표의 라벨은 그 인스턴스의 템플릿 매개변수를 나타낸다.\n"
//"<li>%A yellow dashed arrow denotes a relation between a template instance and " //"<li>%A yellow dashed arrow denotes a relation between a template instance and "
//"the template class it was instantiated from. The arrow is labeled with " //"the template class it was instantiated from. The arrow is labeled with "
//"the template parameters of the instance.\n" //"the template parameters of the instance.\n"
...@@ -1054,22 +1057,22 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1054,22 +1057,22 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! text for the link to the legend page */ /*! text for the link to the legend page */
virtual QCString trLegend() virtual QCString trLegend()
{ {
return "설명"; // TODO: Need to be translated. -ryk11/22/01. return "범례";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.0 // new since 1.2.0
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */ /*! Used as a marker that is put before a test item */
virtual QCString trTest() virtual QCString trTest()
{ {
return "테스트"; // TODO: Need to be translated. -ryk11/22/01. return "테스트";
} }
/*! Used as the header of the test list */ /*! Used as the header of the test list */
virtual QCString trTestList() virtual QCString trTestList()
{ {
return "테스트 목록"; // TODO: Need to be translated. -ryk11/22/01. return "테스트 목록";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1149,11 +1152,11 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1149,11 +1152,11 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
return "값:"; // TODO: Need to be translated. -ryk11/22/01. return "값:"; // TODO: Need to be translated. -ryk11/22/01.
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.5 // new since 1.2.5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \\bug item */ /*! Used as a marker that is put before a \\bug item */
virtual QCString trBug() virtual QCString trBug()
{ {
...@@ -1169,9 +1172,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1169,9 +1172,9 @@ class TranslatorKorean : public TranslatorAdapter_1_3
// new since 1.2.6 // new since 1.2.6
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as ansicpg for RTF file /*! Used as ansicpg for RTF file
* *
* The following table shows the correlation of Charset name, Charset Value and * The following table shows the correlation of Charset name, Charset Value and
* <pre> * <pre>
* Codepage number: * Codepage number:
* Charset Name Charset Value(hex) Codepage number * Charset Name Charset Value(hex) Codepage number
...@@ -1192,15 +1195,15 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1192,15 +1195,15 @@ class TranslatorKorean : public TranslatorAdapter_1_3
* GB2313_CHARSET 134 (x86) 936 * GB2313_CHARSET 134 (x86) 936
* CHINESEBIG5_CHARSET 136 (x88) 950 * CHINESEBIG5_CHARSET 136 (x88) 950
* </pre> * </pre>
* *
*/ */
virtual QCString trRTFansicp() virtual QCString trRTFansicp()
{ {
return "1252"; return "1252";
} }
/*! Used as ansicpg for RTF fcharset
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values. * \see trRTFansicp() for a table of possible values.
*/ */
virtual QCString trRTFCharSet() virtual QCString trRTFCharSet()
...@@ -1213,90 +1216,90 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1213,90 +1216,90 @@ class TranslatorKorean : public TranslatorAdapter_1_3
{ {
return "인덱스"; // TODO: Need to be translated. -ryk11/22/01. return "인덱스"; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trClass(bool first_capital, bool singular) virtual QCString trClass(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "클래스" : "클래스")); QCString result((first_capital ? "클래스" : "클래스"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trFile(bool first_capital, bool singular) virtual QCString trFile(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "파일" : "파일")); QCString result((first_capital ? "파일" : "파일"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trNamespace(bool first_capital, bool singular) virtual QCString trNamespace(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "Namespace" : "namespace")); QCString result((first_capital ? "Namespace" : "namespace"));
if (!singular) result+="s"; if (!singular) result+="s";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trGroup(bool first_capital, bool singular) virtual QCString trGroup(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "그룹" : "그룹")); QCString result((first_capital ? "그룹" : "그룹"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trPage(bool first_capital, bool singular) virtual QCString trPage(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "페이지" : "페이지")); QCString result((first_capital ? "페이지" : "페이지"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trMember(bool first_capital, bool singular) virtual QCString trMember(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "멤버" : "멤버")); QCString result((first_capital ? "멤버" : "멤버"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trField(bool first_capital, bool singular) virtual QCString trField(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "필드" : "필드")); QCString result((first_capital ? "필드" : "필드"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trGlobal(bool first_capital, bool singular) virtual QCString trGlobal(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "Global" : "global")); QCString result((first_capital ? "Global" : "global"));
if (!singular) result+="s"; if (!singular) result+="s";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
...@@ -1309,7 +1312,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1309,7 +1312,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
/*! This text is generated when the \\author command is used and /*! This text is generated when the \\author command is used and
* for the author section in man pages. */ * for the author section in man pages. */
virtual QCString trAuthor(bool first_capital, bool singular) virtual QCString trAuthor(bool first_capital, bool singular)
{ {
QCString result((first_capital ? "작성자" : "작성자")); QCString result((first_capital ? "작성자" : "작성자"));
if (!singular) result+="들"; if (!singular) result+="들";
return result; // TODO: Need to be translated. -ryk11/22/01. return result; // TODO: Need to be translated. -ryk11/22/01.
...@@ -1330,7 +1333,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1330,7 +1333,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
// new since 1.2.13 // new since 1.2.13
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are implemented by this one. * members that are implemented by this one.
*/ */
virtual QCString trImplementedFromList(int numEntries) virtual QCString trImplementedFromList(int numEntries)
...@@ -1364,8 +1367,8 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1364,8 +1367,8 @@ class TranslatorKorean : public TranslatorAdapter_1_3
// new since 1.2.17 // new since 1.2.17
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been /*! Used as the header of the list of item that have been
* flagged deprecated * flagged deprecated
*/ */
virtual QCString trDeprecatedList() virtual QCString trDeprecatedList()
{ {
...@@ -1376,7 +1379,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1376,7 +1379,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3
// new since 1.2.18 // new since 1.2.18
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in /*! Used as a header for declaration section of the events found in
* a C# program * a C# program
*/ */
virtual QCString trEvents() virtual QCString trEvents()
...@@ -1394,57 +1397,111 @@ class TranslatorKorean : public TranslatorAdapter_1_3 ...@@ -1394,57 +1397,111 @@ class TranslatorKorean : public TranslatorAdapter_1_3
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope. /*! Used as a heading for a list of Java class types with package scope.
*/ */
virtual QCString trPackageTypes() virtual QCString trPackageTypes()
{ {
return "패키지 타입"; return "패키지 타입들"; //"Package Types";
} }
/*! Used as a heading for a list of Java class functions with package /*! Used as a heading for a list of Java class functions with package
* scope. * scope.
*/ */
virtual QCString trPackageMembers() virtual QCString trPackageMembers()
{ {
return "패키지 함수"; return "패키지 함수들"; //"Package Functions";
} }
/*! Used as a heading for a list of static Java class functions with /*! Used as a heading for a list of static Java class functions with
* package scope. * package scope.
*/ */
virtual QCString trStaticPackageMembers() virtual QCString trStaticPackageMembers()
{ {
return "정적 패키지 함수"; return "정적 패키지 함수들"; //"Static Package Functions";
} }
/*! Used as a heading for a list of Java class variables with package /*! Used as a heading for a list of Java class variables with package
* scope. * scope.
*/ */
virtual QCString trPackageAttribs() virtual QCString trPackageAttribs()
{ {
return "패키지 속성"; return "패키지 속성들"; //"Package Attributes";
} }
/*! Used as a heading for a list of static Java class variables with /*! Used as a heading for a list of static Java class variables with
* package scope. * package scope.
*/ */
virtual QCString trStaticPackageAttribs() virtual QCString trStaticPackageAttribs()
{ {
return "정적 패키지 속성"; return "정적 패키지 속성들"; //"Static Package Attributes";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.3.1 // new since 1.3.1
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page /*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members. * to link to the unfiltered list of all members.
*/ */
virtual QCString trAll() virtual QCString trAll()
{ {
return "All"; return "All";
} }
/*! Put in front of the call graph for a function. */ /*! Put in front of the call graph for a function. */
virtual QCString trCallGraph() virtual QCString trCallGraph()
{ {
return "이 함수의 호출상태를 나타낸 그래프입니다."; return "다음은 이 함수에 대한 호출 그래프입니다:";
//"Here is the call graph for this function:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual QCString trSearchForIndex()
{
return "검색: "; //"Search for";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
return "검색 결과";//"Search Results";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual QCString trSearchResults(int numDocuments)
{
if (numDocuments==0)
{
//return "Sorry, no documents matching your query.";
return "죄송합니다. 질의와 일치하는 문서가 없습니다.";
}
else if (numDocuments==1)
{
//return "Found <b>1</b> document matching your query.";
return "질의와 일치하는 <b>1</b>개의 문서를 찾았습니다.";
}
else
{
//return "Found <b>$num</b> documents matching your query. "
// "Showing best matches first.";
return "질의와 일치하는 <b>$num</b>개의 문서들을 찾았습니다. "
"처음에 나오는 것이 가장 일치하는 문서입니다.";
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual QCString trSearchMatches()
{
return "Matches:";
}
}; };
#endif #endif
...@@ -88,24 +88,6 @@ inline void writeXMLCodeString(QTextStream &t,const char *s) ...@@ -88,24 +88,6 @@ inline void writeXMLCodeString(QTextStream &t,const char *s)
static void writeXMLHeader(QTextStream &t) static void writeXMLHeader(QTextStream &t)
{ {
//QCString dtdName = Config_getString("XML_DTD");
//QCString schemaName = Config_getString("XML_SCHEMA");
//t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
// << "' standalone='";
//if (dtdName.isEmpty() && schemaName.isEmpty()) t << "yes"; else t << "no";
//t << "'?>" << endl;
//if (!dtdName.isEmpty())
//{
// t << "<!DOCTYPE doxygen SYSTEM \"doxygen.dtd\">" << endl;
//}
//t << "<doxygen ";
//if (!schemaName.isEmpty())
//{
// t << "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
// t << "xsi:noNamespaceSchemaLocation=\"doxygen.xsd\" ";
//}
//t << "version=\"" << versionString << "\">" << endl;
t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset() t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
<< "' standalone='no'?>" << endl;; << "' standalone='no'?>" << endl;;
t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
...@@ -113,6 +95,38 @@ static void writeXMLHeader(QTextStream &t) ...@@ -113,6 +95,38 @@ static void writeXMLHeader(QTextStream &t)
t << "version=\"" << versionString << "\">" << endl; t << "version=\"" << versionString << "\">" << endl;
} }
static void writeCombineScript()
{
QCString outputDirectory = Config_getString("XML_OUTPUT");
QCString fileName=outputDirectory+"/combine.xslt";
QFile f(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
QTextStream t(&f);
t.setEncoding(QTextStream::Latin1);
t <<
"<!-- XSLT script to combine the generated output into a single file. \n"
" If you have xsltproc you could use:\n"
" xsltproc combine.xslt index.xml >all.xml\n"
"-->\n"
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n"
" <xsl:output method=\"xml\" version=\"1.0\" indent=\"yes\" standalone=\"yes\" />\n"
" <xsl:template match=\"/\">\n"
" <doxygen version=\"{doxygenindex/@version}\">\n"
" <!-- Load all doxgen generated xml files -->\n"
" <xsl:for-each select=\"doxygenindex/compound\">\n"
" <xsl:copy-of select=\"document( concat( @refid, '.xml' ) )/doxygen/*\" />\n"
" </xsl:for-each>\n"
" </doxygen>\n"
" </xsl:template>\n"
"</xsl:stylesheet>\n";
}
void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId, void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId,
const char *anchorId,const char *text) const char *anchorId,const char *text)
{ {
...@@ -1569,6 +1583,8 @@ void generateXML() ...@@ -1569,6 +1583,8 @@ void generateXML()
//t << " </compoundlist>" << endl; //t << " </compoundlist>" << endl;
t << "</doxygenindex>" << endl; t << "</doxygenindex>" << endl;
writeCombineScript();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment