Sat, 21 Oct 2017 15:18:15 +0200
Improved and beautified the rich text display of the documentation viewer some more.
--- a/Preferences/ConfigurationPages/EditorDocViewerPage.py Sat Oct 21 15:13:56 2017 +0200 +++ b/Preferences/ConfigurationPages/EditorDocViewerPage.py Sat Oct 21 15:18:15 2017 +0200 @@ -37,8 +37,10 @@ self.providerComboBox.addItem(text, provider) # set initial values + self.parenthesisCheckBox.setChecked( + Preferences.getDocuViewer("ShowInfoOnOpenParenthesis")) self.richTextCheckBox.setChecked( - Preferences.getDocuViewer("ShowInfoAsMarkdown")) + Preferences.getDocuViewer("ShowInfoAsRichText")) provider = Preferences.getDocuViewer("Provider") self.viewerGroupBox.setChecked(provider != "disabled") @@ -54,7 +56,11 @@ enabled = self.viewerGroupBox.isChecked() if enabled: Preferences.setDocuViewer( - "ShowInfoAsMarkdown", self.richTextCheckBox.isChecked()) + "ShowInfoOnOpenParenthesis", + self.parenthesisCheckBox.isChecked()) + Preferences.setDocuViewer( + "ShowInfoAsRichText", + self.richTextCheckBox.isChecked()) Preferences.setDocuViewer( "Provider", self.providerComboBox.itemData(
--- a/Preferences/ConfigurationPages/EditorDocViewerPage.ui Sat Oct 21 15:13:56 2017 +0200 +++ b/Preferences/ConfigurationPages/EditorDocViewerPage.ui Sat Oct 21 15:18:15 2017 +0200 @@ -44,6 +44,16 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> + <widget class="QCheckBox" name="parenthesisCheckBox"> + <property name="toolTip"> + <string>Select to show documentation when entering a '(' character</string> + </property> + <property name="text"> + <string>Show documentation upon '('</string> + </property> + </widget> + </item> + <item> <widget class="QCheckBox" name="richTextCheckBox"> <property name="toolTip"> <string>Select to show code documentation as rich text</string> @@ -100,6 +110,7 @@ </widget> <tabstops> <tabstop>viewerGroupBox</tabstop> + <tabstop>parenthesisCheckBox</tabstop> <tabstop>richTextCheckBox</tabstop> <tabstop>providerComboBox</tabstop> </tabstops>
--- a/Preferences/__init__.py Sat Oct 21 15:13:56 2017 +0200 +++ b/Preferences/__init__.py Sat Oct 21 15:18:15 2017 +0200 @@ -429,9 +429,6 @@ "CallTipsScintillaOnFail": False, # show QScintilla calltips, if plug-in fails - "ShowInfoOnOpenParenthesis": True, - # TODO: add to editor configuration page - "AutoCheckSyntax": True, "OnlineSyntaxCheck": True, "OnlineSyntaxCheckInterval": 5, @@ -1467,8 +1464,9 @@ # defaults for Code Documentation Viewer docuViewerDefaults = { - "ShowInfoAsMarkdown": False, + "ShowInfoAsRichText": False, "Provider": "disabled", + "ShowInfoOnOpenParenthesis": True, } @@ -3576,7 +3574,7 @@ @param prefClass preferences class used as the storage area @return the requested editor colour """ - if key in ["ShowInfoAsMarkdown"]: + if key in ["ShowInfoAsRichText", "ShowInfoOnOpenParenthesis"]: return toBool(prefClass.settings.value( "CodeDocumentationViewer/" + key, prefClass.docuViewerDefaults[key]))
--- a/QScintilla/Editor.py Sat Oct 21 15:13:56 2017 +0200 +++ b/QScintilla/Editor.py Sat Oct 21 15:18:15 2017 +0200 @@ -5004,7 +5004,8 @@ @param charNumber value of the character entered (integer) """ char = chr(charNumber) - if char == "(" and Preferences.getEditor("ShowInfoOnOpenParenthesis"): + if char == "(" and \ + Preferences.getDocuViewer("ShowInfoOnOpenParenthesis"): self.vm.showEditorInfo(self) def __showCodeInfo(self):
--- a/UI/CodeDocumentationViewer.py Sat Oct 21 15:13:56 2017 +0200 +++ b/UI/CodeDocumentationViewer.py Sat Oct 21 15:18:15 2017 +0200 @@ -24,6 +24,7 @@ from .CodeDocumentationViewerTemplate import \ prepareDocumentationViewerHtmlDocument, \ + prepareDocumentationViewerHtmlDocWarningDocument, \ prepareDocumentationViewerHtmlWarningDocument from .data import codeDocumentationViewer_rc # __IGNORE_WARNING__ @@ -213,6 +214,7 @@ self.__processingThread = DocumentProcessingThread() self.__processingThread.htmlReady.connect(self.__setHtml) + self.__processingThread.warning.connect(self.__setHtmlWarning) def __setupUi(self): """ @@ -299,7 +301,7 @@ """ Public method to finalize the setup of the documentation viewer. """ - self.__showTextViewer(Preferences.getDocuViewer("ShowInfoAsMarkdown")) + self.__showTextViewer(Preferences.getDocuViewer("ShowInfoAsRichText")) self.__startingUp = False provider = Preferences.getDocuViewer("Provider") @@ -408,7 +410,8 @@ self.__providers[self.__selectedProvider][0](editor) # TODO: document this hook in the plug-in document - def documentationReady(self, documentationInfo, isWarning=False): + def documentationReady(self, documentationInfo, isWarning=False, + isDocWarning=False): """ Public method to provide the documentation info to the viewer. @@ -425,6 +428,8 @@ @type dict or str @param isWarning flag indicating a warning page @type bool + @param isDocWarning flag indicating a documentation warning page + @type bool """ self.__ui.activateCodeDocumentationViewer(switchFocus=False) @@ -437,13 +442,16 @@ isWarning=True) else: self.documentationReady(self.__noDocumentationString, - isWarning=True) + isDocWarning=True) return if self.__showMarkdown: if isWarning: html = prepareDocumentationViewerHtmlWarningDocument( documentationInfo) + elif isDocWarning: + html = prepareDocumentationViewerHtmlDocWarningDocument( + documentationInfo) elif isinstance(documentationInfo, dict): html = prepareDocumentationViewerHtmlDocument( documentationInfo) @@ -496,6 +504,16 @@ """ self.__richTextViewer.setHtml(html) + def __setHtmlWarning(self, warningText): + """ + Private slot to set a display message. + + @param warningText text to be shown as a warning + @type str + """ + html = prepareDocumentationViewerHtmlWarningDocument(warningText) + self.__richTextViewer.setHtml(html) + @pyqtSlot(int) def on_providerComboBox_currentIndexChanged(self, index): """ @@ -529,7 +547,7 @@ """ Public slot to handle a change of preferences. """ - showMarkdown = Preferences.getDocuViewer("ShowInfoAsMarkdown") + showMarkdown = Preferences.getDocuViewer("ShowInfoAsRichText") if showMarkdown != self.__showMarkdown: self.__showTextViewer(showMarkdown) @@ -560,7 +578,7 @@ self.documentationReady(self.__lastDocumentation) - Preferences.setDocuViewer("ShowInfoAsMarkdown", richText) + Preferences.setDocuViewer("ShowInfoAsRichText", richText) class DocumentProcessingThread(QThread): @@ -570,8 +588,10 @@ @signal htmlReady(str) emitted with the processed HTML to signal the availability of the processed HTML + @signal warning(str) emitted with an error or warning message """ htmlReady = pyqtSignal(str) + warning = pyqtSignal(str) def __init__(self, parent=None): """ @@ -604,12 +624,11 @@ if language == "markdown": html = self.__convertMarkdown(text, True, "html5") + self.htmlReady.emit(html) else: - html = "<html><body><p>" - html += self.tr("Format '{0}' is not supported.").format(language) - html += "</p></body></html>" - - self.htmlReady.emit(html) + html = self.tr("Format <b>{0}</b> is not supported.")\ + .format(language) + self.warning.emit(html) def __convertMarkdown(self, text, convertNewLineToBreak, htmlFormat): """
--- a/UI/CodeDocumentationViewerTemplate.py Sat Oct 21 15:13:56 2017 +0200 +++ b/UI/CodeDocumentationViewerTemplate.py Sat Oct 21 15:18:15 2017 +0200 @@ -9,6 +9,11 @@ from __future__ import unicode_literals +from PyQt5.QtCore import QCoreApplication + +import Utilities + + def prepareDocumentationViewerHtmlDocument(documentationInfo): """ Public function to prepare the HTML document. @@ -69,9 +74,15 @@ title = titleTemplate.replace("@NAME@", name) if documentationInfo["argspec"] or documentationInfo["note"]: if documentationInfo["argspec"]: + argspec = Utilities.html_encode(documentationInfo["argspec"]) + for char in ['=', ',', '(', ')', '*', '**']: + argspec = argspec.replace( + char, + '<span class="argspec-highlight">{0}</span>'.format( + char)) argspec = argspecTemplate\ .replace("@NAME@", name)\ - .replace("@ARGSPEC@", documentationInfo["argspec"]) + .replace("@ARGSPEC@", argspec) else: argspec = "" if documentationInfo["note"]: @@ -98,13 +109,18 @@ .replace("\r", "<br/>") docstring = docstringTemplate.replace("@DOCSTRING@", docstring) else: - docstring = "" + docstring = \ + """<div class="hr"></div><div id="doc-warning">{0}</div>"""\ + .format(QCoreApplication.translate( + "CodeDocumentationViewer", + "No further documentation available")) return mainTemplate\ .replace("@HEADER@", header)\ .replace("@DOCSTRING@", docstring) -def prepareDocumentationViewerHtmlWarningDocument(text): + +def prepareDocumentationViewerHtmlDocWarningDocument(text): """ Public function to prepare a HTML warning document. @@ -128,3 +144,29 @@ """ return mainTemplate.replace("@TEXT@", text) + + +def prepareDocumentationViewerHtmlWarningDocument(text): + """ + Public function to prepare a HTML warning document. + + @param text warning text to be shown + @type str + @return prepared HTML document + @rtype str + """ + mainTemplate = """ + <!DOCTYPE html> + <html> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"> + <link rel="stylesheet" href="qrc:documentViewerStyle.css" + type="text/css" /> + </head> + <body> + <div id="warning">@TEXT@</div> + </body> + </html> + """ + + return mainTemplate.replace("@TEXT@", text)
--- a/UI/data/codeDocumentationViewer_rc.py Sat Oct 21 15:13:56 2017 +0200 +++ b/UI/data/codeDocumentationViewer_rc.py Sat Oct 21 15:18:15 2017 +0200 @@ -9,316 +9,321 @@ from PyQt5 import QtCore qt_resource_data = b"\ -\x00\x00\x13\x3e\ -\x62\ -\x6f\x64\x79\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\ -\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x69\x74\ -\x65\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\ -\x62\x28\x35\x31\x2c\x20\x35\x31\x2c\x20\x35\x31\x29\x3b\x0a\x20\ -\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x30\x70\x78\x20\x32\ -\x35\x70\x78\x20\x31\x35\x70\x78\x20\x32\x35\x70\x78\x3b\x0a\x7d\ -\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x54\x69\x74\x6c\x65\x20\ +\x00\x00\x13\x8d\ +\x2f\ +\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x74\x79\x6c\x65\x20\ +\x64\x65\x66\x69\x6e\x69\x74\x69\x6f\x6e\x20\x69\x73\x20\x62\x61\ +\x73\x65\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x73\x74\x79\x6c\x65\ +\x20\x73\x68\x65\x65\x74\x20\x66\x69\x6c\x65\x20\x6f\x66\x20\x53\ +\x70\x79\x64\x65\x72\x2e\x0a\x20\x2a\x2f\x0a\x20\x0a\x62\x6f\x64\ +\x79\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x69\x74\x65\x3b\ +\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\ +\x35\x31\x2c\x20\x35\x31\x2c\x20\x35\x31\x29\x3b\x0a\x20\x20\x20\ +\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x30\x70\x78\x20\x31\x30\x70\ +\x78\x20\x31\x30\x70\x78\x20\x31\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\ +\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x54\x69\x74\x6c\x65\x20\x73\x74\ +\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\x69\x76\x2e\x74\ +\x69\x74\x6c\x65\x20\x68\x31\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\ +\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x33\x30\x25\x3b\x0a\x20\ +\x20\x20\x20\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\x3a\x20\ +\x27\x54\x72\x65\x62\x75\x63\x68\x65\x74\x20\x4d\x53\x27\x2c\x20\ +\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x0a\x20\x20\x20\x20\ +\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\ +\x3a\x20\x23\x38\x35\x37\x37\x34\x41\x3b\x0a\x20\x20\x20\x20\x62\ +\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x69\x6d\x61\x67\x65\x3a\ +\x20\x2d\x77\x65\x62\x6b\x69\x74\x2d\x67\x72\x61\x64\x69\x65\x6e\ +\x74\x28\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x69\x6e\x65\x61\ +\x72\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x30\x20\x30\x2c\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x20\x30\x20\x31\x30\x30\x25\x2c\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x28\x23\x38\x35\ +\x37\x37\x34\x41\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\ +\x6f\x6c\x6f\x72\x2d\x73\x74\x6f\x70\x28\x36\x30\x25\x2c\x20\x23\ +\x62\x39\x61\x35\x36\x37\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x74\x6f\x28\x23\x65\x31\x63\x38\x37\x64\x29\x0a\x20\x20\x20\ +\x20\x29\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x73\x68\x61\ +\x64\x6f\x77\x3a\x20\x30\x70\x78\x20\x31\x70\x78\x20\x31\x70\x78\ +\x20\x72\x67\x62\x61\x28\x30\x2c\x20\x30\x2c\x20\x30\x2c\x20\x30\ +\x2e\x32\x29\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\ +\x69\x67\x68\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x20\x20\ +\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x36\x70\x78\x20\x30\ +\x70\x78\x20\x36\x70\x78\x20\x32\x30\x70\x78\x3b\x0a\x20\x20\x20\ +\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x30\x70\x78\x20\x2d\x32\x35\ +\x70\x78\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x23\ +\x46\x46\x46\x46\x46\x46\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x0a\x20\x2a\ +\x20\x54\x68\x65\x20\x6e\x65\x78\x74\x20\x74\x77\x6f\x20\x73\x74\ +\x79\x6c\x65\x73\x20\x61\x72\x65\x20\x6e\x65\x65\x64\x65\x64\x20\ +\x74\x6f\x0a\x20\x2a\x20\x6d\x6f\x64\x69\x66\x79\x20\x74\x68\x65\ +\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x70\x72\x65\x73\x65\x6e\x74\ +\x20\x6f\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x74\x69\x74\x6c\x65\ +\x20\x6f\x66\x20\x70\x61\x67\x65\x73\x20\x6c\x69\x6b\x65\x20\x73\ +\x63\x69\x70\x79\x2e\x73\x74\x61\x74\x73\x20\x6f\x72\x0a\x20\x2a\ +\x20\x73\x63\x69\x70\x79\x2e\x69\x6f\x0a\x20\x2a\x2f\x0a\x64\x69\ +\x76\x2e\x74\x69\x74\x6c\x65\x20\x68\x31\x20\x61\x20\x7b\x0a\x20\ +\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\x6e\x73\x70\ +\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x75\x72\x73\x6f\ +\x72\x3a\x20\x64\x65\x66\x61\x75\x6c\x74\x3b\x0a\x7d\x0a\x0a\x64\ +\x69\x76\x2e\x74\x69\x74\x6c\x65\x20\x68\x31\x20\x74\x74\x20\x7b\ +\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\ +\x39\x35\x25\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\ +\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\x6e\x73\ +\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\ +\x72\x3a\x20\x23\x46\x46\x46\x46\x46\x46\x3b\x0a\x7d\x0a\x0a\x0a\ +\x2f\x2a\x20\x2d\x2d\x2d\x20\x4d\x65\x74\x61\x64\x61\x74\x61\x20\ \x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\x69\x76\ -\x2e\x74\x69\x74\x6c\x65\x20\x68\x31\x20\x7b\x0a\x20\x20\x20\x20\ -\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x33\x30\x25\x3b\ -\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\ -\x3a\x20\x27\x54\x72\x65\x62\x75\x63\x68\x65\x74\x20\x4d\x53\x27\ -\x2c\x20\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x0a\x20\x20\ -\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\ -\x6f\x72\x3a\x20\x23\x38\x35\x37\x37\x34\x41\x3b\x0a\x20\x20\x20\ -\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x69\x6d\x61\x67\ -\x65\x3a\x20\x2d\x77\x65\x62\x6b\x69\x74\x2d\x67\x72\x61\x64\x69\ -\x65\x6e\x74\x28\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x69\x6e\ -\x65\x61\x72\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x30\x20\x30\ -\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x30\x20\x31\x30\x30\x25\ -\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x28\x23\ -\x38\x35\x37\x37\x34\x41\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x20\x63\x6f\x6c\x6f\x72\x2d\x73\x74\x6f\x70\x28\x36\x30\x25\x2c\ -\x20\x23\x62\x39\x61\x35\x36\x37\x29\x2c\x0a\x20\x20\x20\x20\x20\ -\x20\x20\x20\x74\x6f\x28\x23\x65\x31\x63\x38\x37\x64\x29\x0a\x20\ -\x20\x20\x20\x29\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x73\ -\x68\x61\x64\x6f\x77\x3a\x20\x30\x70\x78\x20\x31\x70\x78\x20\x31\ -\x70\x78\x20\x72\x67\x62\x61\x28\x30\x2c\x20\x30\x2c\x20\x30\x2c\ -\x20\x30\x2e\x32\x29\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\ +\x2e\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x7b\x0a\x20\x20\x20\x20\ +\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x30\x70\x78\ +\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x62\x6f\x74\ +\x74\x6f\x6d\x3a\x20\x31\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\ +\x61\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x31\x70\x78\ +\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x31\ +\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x66\x66\x66\x34\x64\ +\x38\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x3a\x20\x31\ +\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x23\x43\x39\x43\x39\x43\x39\ +\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\x61\x64\ +\x69\x75\x73\x3a\x20\x36\x70\x78\x20\x36\x70\x78\x20\x36\x70\x78\ +\x20\x36\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x78\x2d\x73\x68\ +\x61\x64\x6f\x77\x3a\x20\x31\x70\x78\x20\x31\x70\x78\x20\x37\x70\ +\x78\x20\x23\x43\x41\x43\x41\x43\x41\x3b\x0a\x7d\x0a\x0a\x64\x69\ +\x76\x2e\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x70\x20\x7b\x0a\x20\ +\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x37\x70\x78\x20\x30\ +\x70\x78\x20\x37\x70\x78\x20\x31\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\ +\x73\x70\x61\x6e\x2e\x64\x65\x66\x20\x7b\x0a\x20\x20\x20\x20\x66\ +\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\x3a\x20\x6d\x6f\x6e\x6f\ +\x73\x70\x61\x63\x65\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\ +\x73\x69\x7a\x65\x3a\x20\x39\x30\x25\x3b\x0a\x7d\x0a\x0a\x73\x70\ +\x61\x6e\x2e\x61\x72\x67\x73\x70\x65\x63\x2d\x68\x69\x67\x68\x6c\ +\x69\x67\x68\x74\x20\x7b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ +\x3a\x20\x62\x6c\x75\x65\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\ +\x2d\x73\x69\x7a\x65\x3a\x20\x31\x31\x30\x25\x3b\x0a\x20\x20\x20\ +\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\x39\x30\ +\x30\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x44\x6f\ +\x63\x73\x74\x72\x69\x6e\x67\x20\x64\x69\x76\x20\x73\x74\x79\x6c\ +\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\x69\x76\x2e\x64\x6f\x63\ +\x73\x74\x72\x69\x6e\x67\x20\x7b\x0a\x20\x20\x20\x20\x6d\x61\x72\ +\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x2d\x31\x70\x78\x3b\x0a\x7d\ +\x0a\x0a\x64\x69\x76\x2e\x64\x6f\x63\x73\x74\x72\x69\x6e\x67\x20\ +\x70\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ +\x20\x30\x70\x78\x20\x32\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\ +\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x48\x65\x61\x64\x65\x72\x73\ +\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x68\x32\ +\x2c\x20\x68\x33\x2c\x20\x68\x34\x20\x7b\x0a\x20\x20\x20\x20\x66\ +\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\x3a\x20\x27\x48\x65\x6c\ +\x76\x65\x74\x69\x63\x61\x27\x2c\x20\x73\x61\x6e\x73\x2d\x73\x65\ +\x72\x69\x66\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ +\x72\x67\x62\x28\x34\x39\x2c\x20\x31\x32\x36\x2c\x20\x31\x37\x32\ +\x29\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\ +\x70\x3a\x20\x32\x30\x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\ +\x67\x69\x6e\x2d\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x30\x70\x78\ +\x3b\x0a\x7d\x0a\x0a\x68\x32\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\ +\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x32\x30\x25\x3b\x0a\x20\ +\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\ +\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x70\x78\x20\x73\ +\x6f\x6c\x69\x64\x20\x72\x67\x62\x28\x32\x32\x30\x2c\x20\x32\x32\ +\x30\x2c\x20\x32\x32\x30\x29\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\ +\x64\x69\x6e\x67\x3a\x20\x34\x70\x78\x20\x30\x70\x78\x20\x34\x70\ +\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x68\x33\x20\x7b\x0a\x20\ +\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x31\ +\x30\x25\x3b\x0a\x7d\x0a\x0a\x68\x34\x20\x7b\x0a\x20\x20\x20\x20\ +\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x30\x25\x3b\ +\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\ +\x20\x31\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\ \x77\x65\x69\x67\x68\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\ -\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x36\x70\x78\ -\x20\x30\x70\x78\x20\x36\x70\x78\x20\x32\x30\x70\x78\x3b\x0a\x20\ -\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x30\x70\x78\x20\x2d\ -\x32\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\ -\x20\x23\x46\x46\x46\x46\x46\x46\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x0a\ -\x20\x2a\x20\x54\x68\x65\x20\x6e\x65\x78\x74\x20\x74\x77\x6f\x20\ -\x73\x74\x79\x6c\x65\x73\x20\x61\x72\x65\x20\x6e\x65\x65\x64\x65\ -\x64\x20\x74\x6f\x0a\x20\x2a\x20\x6d\x6f\x64\x69\x66\x79\x20\x74\ -\x68\x65\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x70\x72\x65\x73\x65\ -\x6e\x74\x20\x6f\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x74\x69\x74\ -\x6c\x65\x20\x6f\x66\x20\x70\x61\x67\x65\x73\x20\x6c\x69\x6b\x65\ -\x20\x73\x63\x69\x70\x79\x2e\x73\x74\x61\x74\x73\x20\x6f\x72\x0a\ -\x20\x2a\x20\x73\x63\x69\x70\x79\x2e\x69\x6f\x0a\x20\x2a\x2f\x0a\ -\x64\x69\x76\x2e\x74\x69\x74\x6c\x65\x20\x68\x31\x20\x61\x20\x7b\ -\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\x6e\ -\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x75\x72\ -\x73\x6f\x72\x3a\x20\x64\x65\x66\x61\x75\x6c\x74\x3b\x0a\x7d\x0a\ -\x0a\x64\x69\x76\x2e\x74\x69\x74\x6c\x65\x20\x68\x31\x20\x74\x74\ -\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\ -\x3a\x20\x39\x35\x25\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\ -\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\ -\x6e\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x6f\ -\x6c\x6f\x72\x3a\x20\x23\x46\x46\x46\x46\x46\x46\x3b\x0a\x7d\x0a\ -\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4d\x65\x74\x61\x64\x61\x74\ -\x61\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\ -\x69\x76\x2e\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x7b\x0a\x20\x20\ -\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x30\ -\x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x62\ -\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x35\x70\x78\x3b\x0a\x20\x20\x20\ -\x20\x6d\x61\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x31\ -\x70\x78\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ -\x20\x31\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\ -\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x66\x66\x66\ -\x34\x63\x35\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x3a\ -\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x23\x43\x39\x43\x39\ -\x43\x39\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\ -\x61\x64\x69\x75\x73\x3a\x20\x36\x70\x78\x20\x36\x70\x78\x20\x36\ -\x70\x78\x20\x36\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x78\x2d\ -\x73\x68\x61\x64\x6f\x77\x3a\x20\x31\x70\x78\x20\x31\x70\x78\x20\ -\x37\x70\x78\x20\x23\x43\x41\x43\x41\x43\x41\x3b\x0a\x7d\x0a\x0a\ -\x64\x69\x76\x2e\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x70\x20\x7b\ -\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x37\x70\x78\ -\x20\x30\x70\x78\x20\x37\x70\x78\x20\x31\x30\x70\x78\x3b\x0a\x7d\ -\x0a\x0a\x73\x70\x61\x6e\x2e\x64\x65\x66\x20\x7b\x0a\x20\x20\x20\ -\x20\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\x3a\x20\x6d\x6f\ -\x6e\x6f\x73\x70\x61\x63\x65\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\ -\x74\x2d\x73\x69\x7a\x65\x3a\x20\x39\x30\x25\x3b\x0a\x7d\x0a\x0a\ -\x73\x70\x61\x6e\x2e\x61\x72\x67\x73\x70\x65\x63\x2d\x68\x69\x67\ -\x68\x6c\x69\x67\x68\x74\x20\x7b\x0a\x20\x20\x20\x20\x63\x6f\x6c\ -\x6f\x72\x3a\x20\x72\x65\x64\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\ -\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x31\x30\x25\x3b\x0a\x20\x20\ -\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\x39\ -\x30\x30\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x44\ -\x6f\x63\x73\x74\x72\x69\x6e\x67\x20\x64\x69\x76\x20\x73\x74\x79\ -\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\x69\x76\x2e\x64\x6f\ -\x63\x73\x74\x72\x69\x6e\x67\x20\x7b\x0a\x20\x20\x20\x20\x6d\x61\ -\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x2d\x31\x70\x78\x3b\x0a\ -\x7d\x0a\x0a\x64\x69\x76\x2e\x64\x6f\x63\x73\x74\x72\x69\x6e\x67\ -\x20\x70\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\ -\x3a\x20\x30\x70\x78\x20\x32\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\ -\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x48\x65\x61\x64\x65\x72\ -\x73\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x68\ -\x32\x2c\x20\x68\x33\x2c\x20\x68\x34\x20\x7b\x0a\x20\x20\x20\x20\ -\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\x3a\x20\x27\x48\x65\ -\x6c\x76\x65\x74\x69\x63\x61\x27\x2c\x20\x73\x61\x6e\x73\x2d\x73\ -\x65\x72\x69\x66\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\ -\x20\x72\x67\x62\x28\x34\x39\x2c\x20\x31\x32\x36\x2c\x20\x31\x37\ -\x32\x29\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\ -\x6f\x70\x3a\x20\x32\x30\x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x61\ -\x72\x67\x69\x6e\x2d\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x30\x70\ -\x78\x3b\x0a\x7d\x0a\x0a\x68\x32\x20\x7b\x0a\x20\x20\x20\x20\x66\ -\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x34\x30\x25\x3b\x0a\ -\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\ -\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ -\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x70\x78\x20\ -\x73\x6f\x6c\x69\x64\x20\x72\x67\x62\x28\x32\x32\x30\x2c\x20\x32\ -\x32\x30\x2c\x20\x32\x32\x30\x29\x3b\x0a\x20\x20\x20\x20\x70\x61\ -\x64\x64\x69\x6e\x67\x3a\x20\x34\x70\x78\x20\x30\x70\x78\x20\x34\ -\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x68\x33\x20\x7b\x0a\ -\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\ -\x31\x35\x25\x3b\x0a\x7d\x0a\x0a\x68\x34\x20\x7b\x0a\x20\x20\x20\ -\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x30\x25\ -\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\ -\x3a\x20\x31\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\ -\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\ -\x0a\x7d\x0a\x0a\x64\x6c\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\ -\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\ -\x70\x78\x20\x31\x30\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\ -\x64\x69\x76\x2e\x73\x65\x63\x74\x69\x6f\x6e\x20\x70\x20\x7b\x0a\ -\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\ -\x20\x32\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x23\x77\x61\ -\x72\x6e\x69\x6e\x67\x20\x7b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\ -\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x35\x70\x78\x3b\x0a\x20\x20\x20\ -\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\ -\x72\x3a\x20\x23\x46\x46\x45\x34\x45\x34\x3b\x0a\x20\x20\x20\x20\ -\x62\x6f\x72\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\ -\x64\x20\x23\x46\x36\x36\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\ -\x69\x6e\x67\x3a\x20\x34\x70\x78\x20\x38\x70\x78\x20\x34\x70\x78\ -\x20\x38\x70\x78\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x61\ -\x6c\x69\x67\x6e\x3a\x20\x63\x65\x6e\x74\x65\x72\x3b\x0a\x7d\x0a\ -\x0a\x23\x64\x6f\x63\x2d\x77\x61\x72\x6e\x69\x6e\x67\x20\x7b\x0a\ -\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\ -\x31\x36\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\ -\x20\x34\x35\x25\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\ -\x2d\x6c\x65\x66\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\ -\x20\x6d\x61\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x61\ -\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ -\x72\x67\x62\x28\x31\x38\x35\x2c\x20\x37\x34\x2c\x20\x37\x32\x29\ -\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ -\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x32\x34\x32\x2c\ -\x20\x32\x32\x32\x2c\x20\x32\x32\x32\x29\x3b\x0a\x20\x20\x20\x20\ -\x62\x6f\x72\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\ -\x64\x20\x72\x67\x62\x28\x32\x33\x38\x2c\x20\x32\x31\x31\x2c\x20\ -\x32\x31\x35\x29\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ -\x2d\x72\x61\x64\x69\x75\x73\x3a\x20\x34\x70\x78\x20\x34\x70\x78\ -\x20\x34\x70\x78\x20\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x70\x61\ -\x64\x64\x69\x6e\x67\x3a\x20\x31\x35\x70\x78\x3b\x0a\x20\x20\x20\ -\x20\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x20\x63\x65\x6e\ -\x74\x65\x72\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\ -\x69\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x20\x20\x20\x20\ -\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x35\x25\x3b\ -\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\x6e\x6b\ -\x73\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x61\x20\x7b\x0a\x20\x20\x20\ -\x20\x74\x65\x78\x74\x2d\x64\x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\ -\x3a\x20\x6e\x6f\x6e\x65\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\ -\x72\x3a\x20\x72\x67\x62\x61\x28\x34\x30\x2c\x20\x31\x33\x30\x2c\ -\x20\x31\x38\x30\x2c\x20\x31\x29\x3b\x0a\x7d\x0a\x0a\x61\x3a\x68\ -\x6f\x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\ -\x64\x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\x3a\x20\x75\x6e\x64\x65\ -\x72\x6c\x69\x6e\x65\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\ -\x2d\x20\x49\x6d\x61\x67\x65\x73\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\ -\x69\x6d\x67\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x78\x2d\x73\x68\ -\x61\x64\x6f\x77\x3a\x20\x30\x70\x78\x20\x32\x70\x78\x20\x36\x70\ -\x78\x20\x23\x63\x61\x63\x61\x63\x61\x3b\x0a\x20\x20\x20\x20\x62\ +\x7d\x0a\x0a\x64\x6c\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\x7b\ +\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\ +\x78\x20\x31\x30\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x64\ +\x69\x76\x2e\x73\x65\x63\x74\x69\x6f\x6e\x20\x70\x20\x7b\x0a\x20\ +\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\x20\ +\x32\x70\x78\x20\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x23\x77\x61\x72\ +\x6e\x69\x6e\x67\x20\x7b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\ +\x6e\x2d\x74\x6f\x70\x3a\x20\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\ +\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\ +\x3a\x20\x23\x46\x46\x45\x34\x45\x34\x3b\x0a\x20\x20\x20\x20\x62\ +\x6f\x72\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\ +\x20\x23\x46\x36\x36\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\ +\x6e\x67\x3a\x20\x34\x70\x78\x20\x38\x70\x78\x20\x34\x70\x78\x20\ +\x38\x70\x78\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x61\x6c\ +\x69\x67\x6e\x3a\x20\x63\x65\x6e\x74\x65\x72\x3b\x0a\x7d\x0a\x0a\ +\x23\x64\x6f\x63\x2d\x77\x61\x72\x6e\x69\x6e\x67\x20\x7b\x0a\x20\ +\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\ +\x36\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ +\x34\x35\x25\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\ +\x6c\x65\x66\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\ +\x6d\x61\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x61\x75\ +\x74\x6f\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x72\ +\x67\x62\x28\x31\x38\x35\x2c\x20\x37\x34\x2c\x20\x37\x32\x29\x3b\ +\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\ +\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x32\x34\x32\x2c\x20\ +\x32\x32\x32\x2c\x20\x32\x32\x32\x29\x3b\x0a\x20\x20\x20\x20\x62\ \x6f\x72\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\ -\x20\x23\x63\x39\x63\x39\x63\x39\x3b\x0a\x7d\x0a\x0a\x69\x6d\x67\ -\x2e\x61\x6c\x69\x67\x6e\x2d\x63\x65\x6e\x74\x65\x72\x20\x7b\x0a\ -\x20\x20\x20\x20\x64\x69\x73\x70\x6c\x61\x79\x3a\x20\x62\x6c\x6f\ -\x63\x6b\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\ -\x65\x66\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\x6d\ -\x61\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x61\x75\x74\ -\x6f\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\ -\x73\x74\x73\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\ -\x0a\x6f\x6c\x2e\x61\x72\x61\x62\x69\x63\x20\x7b\x0a\x20\x20\x20\ -\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x2d\x31\ -\x30\x70\x78\x3b\x0a\x7d\x0a\x0a\x75\x6c\x20\x7b\x0a\x20\x20\x20\ -\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x2d\x35\ -\x70\x78\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\ -\x74\x65\x72\x61\x6c\x20\x62\x6c\x6f\x63\x6b\x73\x20\x73\x74\x79\ -\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x70\x72\x65\x2e\x6c\x69\ -\x74\x65\x72\x61\x6c\x2d\x62\x6c\x6f\x63\x6b\x20\x7b\x0a\x20\x20\ -\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x2d\x6c\x65\x66\x74\x3a\x20\ -\x33\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\ -\x69\x7a\x65\x3a\x20\x39\x35\x25\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\ -\x20\x2d\x2d\x2d\x20\x44\x6f\x63\x75\x74\x69\x6c\x73\x20\x74\x61\ +\x20\x72\x67\x62\x28\x32\x33\x38\x2c\x20\x32\x31\x31\x2c\x20\x32\ +\x31\x35\x29\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ +\x72\x61\x64\x69\x75\x73\x3a\x20\x34\x70\x78\x20\x34\x70\x78\x20\ +\x34\x70\x78\x20\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\ +\x64\x69\x6e\x67\x3a\x20\x31\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\ +\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x20\x63\x65\x6e\x74\ +\x65\x72\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\ +\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x20\x20\x20\x20\x66\ +\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x35\x25\x3b\x0a\ +\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\x6e\x6b\x73\ +\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x61\x20\x7b\x0a\x20\x20\x20\x20\ +\x74\x65\x78\x74\x2d\x64\x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\x3a\ +\x20\x6e\x6f\x6e\x65\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ +\x3a\x20\x72\x67\x62\x61\x28\x34\x30\x2c\x20\x31\x33\x30\x2c\x20\ +\x31\x38\x30\x2c\x20\x31\x29\x3b\x0a\x7d\x0a\x0a\x61\x3a\x68\x6f\ +\x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x64\ +\x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\x3a\x20\x75\x6e\x64\x65\x72\ +\x6c\x69\x6e\x65\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\ +\x20\x49\x6d\x61\x67\x65\x73\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x69\ +\x6d\x67\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x78\x2d\x73\x68\x61\ +\x64\x6f\x77\x3a\x20\x30\x70\x78\x20\x32\x70\x78\x20\x36\x70\x78\ +\x20\x23\x63\x61\x63\x61\x63\x61\x3b\x0a\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\ +\x23\x63\x39\x63\x39\x63\x39\x3b\x0a\x7d\x0a\x0a\x69\x6d\x67\x2e\ +\x61\x6c\x69\x67\x6e\x2d\x63\x65\x6e\x74\x65\x72\x20\x7b\x0a\x20\ +\x20\x20\x20\x64\x69\x73\x70\x6c\x61\x79\x3a\x20\x62\x6c\x6f\x63\ +\x6b\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\ +\x66\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\x6d\x61\ +\x72\x67\x69\x6e\x2d\x72\x69\x67\x68\x74\x3a\x20\x61\x75\x74\x6f\ +\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\x73\ +\x74\x73\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\ +\x6f\x6c\x2e\x61\x72\x61\x62\x69\x63\x20\x7b\x0a\x20\x20\x20\x20\ +\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x2d\x31\x30\ +\x70\x78\x3b\x0a\x7d\x0a\x0a\x75\x6c\x20\x7b\x0a\x20\x20\x20\x20\ +\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x2d\x35\x70\ +\x78\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x4c\x69\x74\ +\x65\x72\x61\x6c\x20\x62\x6c\x6f\x63\x6b\x73\x20\x73\x74\x79\x6c\ +\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x70\x72\x65\x2e\x6c\x69\x74\ +\x65\x72\x61\x6c\x2d\x62\x6c\x6f\x63\x6b\x20\x7b\x0a\x20\x20\x20\ +\x20\x70\x61\x64\x64\x69\x6e\x67\x2d\x6c\x65\x66\x74\x3a\x20\x33\ +\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\ +\x7a\x65\x3a\x20\x39\x35\x25\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\ +\x2d\x2d\x2d\x20\x44\x6f\x63\x75\x74\x69\x6c\x73\x20\x74\x61\x62\ +\x6c\x65\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\ +\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\x7b\ +\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x63\x6f\x6c\x6c\ +\x61\x70\x73\x65\x3a\x20\x63\x6f\x6c\x6c\x61\x70\x73\x65\x3b\x0a\ +\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x70\x61\x63\x69\ +\x6e\x67\x3a\x20\x30\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\ +\x72\x3a\x20\x23\x44\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\x20\ +\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x61\x75\x74\ +\x6f\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x72\x69\ +\x67\x68\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\x6d\ +\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x37\x70\x78\x3b\ +\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x62\x6f\x74\x74\ +\x6f\x6d\x3a\x20\x31\x37\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\x69\ +\x64\x74\x68\x3a\x20\x39\x30\x25\x3b\x0a\x7d\x0a\x0a\x74\x61\x62\ +\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\x74\x64\x20\x7b\ +\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x35\x70\ +\x78\x3b\x0a\x7d\x0a\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\ +\x74\x69\x6c\x73\x20\x74\x72\x2e\x72\x6f\x77\x2d\x6f\x64\x64\x20\ +\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x32\x34\x39\x2c\ +\x20\x32\x34\x39\x2c\x20\x32\x34\x39\x29\x3b\x0a\x7d\x0a\x0a\x0a\ +\x2f\x2a\x20\x2d\x2d\x2d\x20\x44\x6f\x63\x75\x74\x69\x6c\x73\x20\ +\x74\x61\x62\x6c\x65\x20\x68\x65\x61\x64\x65\x72\x73\x20\x2d\x2d\ +\x2d\x20\x2a\x2f\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\ +\x69\x6c\x73\x20\x74\x68\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\ +\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\ +\x45\x45\x45\x45\x45\x45\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x63\x6f\x6c\x6f\x72\x3a\ +\x20\x23\x44\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x73\x74\x79\x6c\ +\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x77\x69\x64\x74\ +\x68\x3a\x20\x31\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x2d\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x44\ +\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\ +\x72\x2d\x74\x6f\x70\x2d\x73\x74\x79\x6c\x65\x3a\x20\x73\x6f\x6c\ +\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x74\ +\x6f\x70\x2d\x77\x69\x64\x74\x68\x3a\x20\x31\x70\x78\x3b\x0a\x20\ +\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\ +\x62\x6f\x6c\x64\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\x61\ +\x6c\x69\x67\x6e\x3a\x20\x63\x65\x6e\x74\x65\x72\x3b\x0a\x20\x20\ +\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x36\x70\x78\x20\x30\ +\x70\x78\x20\x36\x70\x78\x20\x38\x70\x78\x3b\x0a\x20\x20\x20\x20\ +\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x36\x35\x2c\x20\x36\ +\x35\x2c\x20\x36\x35\x29\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\ +\x2d\x2d\x20\x46\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\x74\x61\ \x62\x6c\x65\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\ -\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\ -\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x63\x6f\x6c\ -\x6c\x61\x70\x73\x65\x3a\x20\x63\x6f\x6c\x6c\x61\x70\x73\x65\x3b\ -\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x70\x61\x63\ -\x69\x6e\x67\x3a\x20\x30\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ -\x65\x72\x3a\x20\x23\x44\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\ -\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\x66\x74\x3a\x20\x61\x75\ -\x74\x6f\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x72\ -\x69\x67\x68\x74\x3a\x20\x61\x75\x74\x6f\x3b\x0a\x20\x20\x20\x20\ -\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x37\x70\x78\ -\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x62\x6f\x74\ -\x74\x6f\x6d\x3a\x20\x31\x37\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\ -\x69\x64\x74\x68\x3a\x20\x39\x30\x25\x3b\x0a\x7d\x0a\x0a\x74\x61\ -\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x20\x74\x64\x20\ -\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x35\ -\x70\x78\x3b\x0a\x7d\x0a\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\ -\x75\x74\x69\x6c\x73\x20\x74\x72\x2e\x72\x6f\x77\x2d\x6f\x64\x64\ -\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\ -\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x32\x34\x39\ -\x2c\x20\x32\x34\x39\x2c\x20\x32\x34\x39\x29\x3b\x0a\x7d\x0a\x0a\ -\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x44\x6f\x63\x75\x74\x69\x6c\x73\ -\x20\x74\x61\x62\x6c\x65\x20\x68\x65\x61\x64\x65\x72\x73\x20\x2d\ -\x2d\x2d\x20\x2a\x2f\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\ -\x74\x69\x6c\x73\x20\x74\x68\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\ +\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\x2e\ +\x66\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\x7b\x0a\x20\x20\x20\ +\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x38\x30\x25\x3b\ +\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x63\x6f\x6c\x6c\ +\x61\x70\x73\x65\x3a\x20\x63\x6f\x6c\x6c\x61\x70\x73\x65\x3b\x0a\ +\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x6c\x65\x66\x74\x3a\ +\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\ +\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\x69\x67\x68\x74\x3a\x20\ +\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\ +\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x35\x70\ +\x78\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\x65\ +\x66\x74\x3a\x20\x34\x30\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\x69\ +\x64\x74\x68\x3a\x20\x38\x33\x25\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\ +\x20\x2d\x2d\x2d\x20\x46\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\ +\x74\x61\x62\x6c\x65\x20\x68\x65\x61\x64\x65\x72\x73\x20\x2d\x2d\ +\x2d\x20\x2a\x2f\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\ +\x69\x6c\x73\x2e\x66\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\x74\ +\x68\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\x6e\x73\x70\ +\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\ +\x72\x2d\x74\x6f\x70\x3a\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\ +\x6e\x74\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x62\ +\x6f\x74\x74\x6f\x6d\x3a\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\ +\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x62\ +\x6c\x61\x63\x6b\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\ +\x65\x69\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x20\x20\x20\ +\x20\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x20\x6c\x65\x66\ +\x74\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\ +\x34\x70\x78\x20\x30\x70\x78\x20\x34\x70\x78\x20\x38\x70\x78\x3b\ +\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x53\x70\x61\x63\ +\x69\x6e\x67\x20\x61\x72\x6f\x75\x6e\x64\x20\x65\x78\x61\x6d\x70\ +\x6c\x65\x20\x63\x6f\x64\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\x64\ +\x69\x76\x2e\x68\x69\x67\x68\x6c\x69\x67\x68\x74\x20\x70\x72\x65\ +\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\ +\x39\x70\x78\x20\x31\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x61\ \x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\ -\x23\x45\x45\x45\x45\x45\x45\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ -\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x63\x6f\x6c\x6f\x72\ -\x3a\x20\x23\x44\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\x20\x62\ -\x6f\x72\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x73\x74\x79\ -\x6c\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\ -\x6f\x72\x64\x65\x72\x2d\x62\x6f\x74\x74\x6f\x6d\x2d\x77\x69\x64\ -\x74\x68\x3a\x20\x31\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ -\x64\x65\x72\x2d\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\ -\x44\x44\x44\x44\x44\x44\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ -\x65\x72\x2d\x74\x6f\x70\x2d\x73\x74\x79\x6c\x65\x3a\x20\x73\x6f\ -\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ -\x74\x6f\x70\x2d\x77\x69\x64\x74\x68\x3a\x20\x31\x70\x78\x3b\x0a\ -\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\ -\x20\x62\x6f\x6c\x64\x3b\x0a\x20\x20\x20\x20\x74\x65\x78\x74\x2d\ -\x61\x6c\x69\x67\x6e\x3a\x20\x63\x65\x6e\x74\x65\x72\x3b\x0a\x20\ -\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x36\x70\x78\x20\ -\x30\x70\x78\x20\x36\x70\x78\x20\x38\x70\x78\x3b\x0a\x20\x20\x20\ -\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x67\x62\x28\x36\x35\x2c\x20\ -\x36\x35\x2c\x20\x36\x35\x29\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\ -\x2d\x2d\x2d\x20\x46\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\x74\ -\x61\x62\x6c\x65\x20\x73\x74\x79\x6c\x65\x20\x2d\x2d\x2d\x20\x2a\ -\x2f\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\x74\x69\x6c\x73\ -\x2e\x66\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\x7b\x0a\x20\x20\ -\x20\x20\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x38\x30\x25\ -\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x63\x6f\x6c\ -\x6c\x61\x70\x73\x65\x3a\x20\x63\x6f\x6c\x6c\x61\x70\x73\x65\x3b\ -\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x6c\x65\x66\x74\ -\x3a\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\ -\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\x69\x67\x68\x74\x3a\ -\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\ -\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x31\x35\ -\x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x6c\ -\x65\x66\x74\x3a\x20\x34\x30\x70\x78\x3b\x0a\x20\x20\x20\x20\x77\ -\x69\x64\x74\x68\x3a\x20\x38\x33\x25\x3b\x0a\x7d\x0a\x0a\x0a\x2f\ -\x2a\x20\x2d\x2d\x2d\x20\x46\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\ -\x20\x74\x61\x62\x6c\x65\x20\x68\x65\x61\x64\x65\x72\x73\x20\x2d\ -\x2d\x2d\x20\x2a\x2f\x0a\x74\x61\x62\x6c\x65\x2e\x64\x6f\x63\x75\ -\x74\x69\x6c\x73\x2e\x66\x69\x65\x6c\x64\x2d\x6c\x69\x73\x74\x20\ -\x74\x68\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x74\x72\x61\x6e\x73\ -\x70\x61\x72\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ -\x65\x72\x2d\x74\x6f\x70\x3a\x20\x74\x72\x61\x6e\x73\x70\x61\x72\ -\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ -\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x74\x72\x61\x6e\x73\x70\x61\x72\ -\x65\x6e\x74\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ -\x62\x6c\x61\x63\x6b\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\ -\x77\x65\x69\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x20\x20\ -\x20\x20\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x20\x6c\x65\ -\x66\x74\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ -\x20\x34\x70\x78\x20\x30\x70\x78\x20\x34\x70\x78\x20\x38\x70\x78\ -\x3b\x0a\x7d\x0a\x0a\x0a\x2f\x2a\x20\x2d\x2d\x2d\x20\x53\x70\x61\ -\x63\x69\x6e\x67\x20\x61\x72\x6f\x75\x6e\x64\x20\x65\x78\x61\x6d\ -\x70\x6c\x65\x20\x63\x6f\x64\x65\x20\x2d\x2d\x2d\x20\x2a\x2f\x0a\ -\x64\x69\x76\x2e\x68\x69\x67\x68\x6c\x69\x67\x68\x74\x20\x70\x72\ -\x65\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ -\x20\x39\x70\x78\x20\x31\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\ -\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\ -\x20\x72\x67\x62\x28\x32\x34\x37\x2c\x20\x32\x34\x37\x2c\x20\x32\ -\x34\x39\x29\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ -\x72\x61\x64\x69\x75\x73\x3a\x20\x34\x70\x78\x20\x34\x70\x78\x20\ -\x34\x70\x78\x20\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ -\x64\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x72\ -\x67\x62\x28\x32\x32\x35\x2c\x20\x32\x32\x35\x2c\x20\x32\x33\x32\ -\x29\x3b\x0a\x7d\x0a\x0a\x64\x69\x76\x2e\x68\x69\x67\x68\x6c\x69\ -\x67\x68\x74\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\ -\x67\x3a\x20\x30\x70\x78\x20\x31\x30\x70\x78\x20\x30\x70\x78\x3b\ -\x0a\x7d\x0a\x0a\x64\x74\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\x6e\ -\x74\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\ -\x20\x20\x20\x20\x2f\x2a\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ -\x20\x31\x36\x70\x78\x3b\x2a\x2f\x0a\x7d\x0a\x0a\x2e\x63\x6c\x61\ -\x73\x73\x69\x66\x69\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x2f\x2a\ -\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x70\x74\x3b\ -\x2a\x2f\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\ -\x68\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x7d\x0a\x0a\x74\ -\x74\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\ -\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x45\x43\x46\x30\x46\ -\x33\x3b\x0a\x20\x20\x20\x20\x2f\x2a\x66\x6f\x6e\x74\x2d\x73\x69\ -\x7a\x65\x3a\x20\x39\x35\x25\x3b\x2a\x2f\x0a\x20\x20\x20\x20\x70\ -\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\x20\x31\x70\x78\x3b\ -\x0a\x7d\x0a\x0a\x0a\x0a\x64\x69\x76\x2e\x61\x64\x6d\x6f\x6e\x69\ -\x74\x69\x6f\x6e\x2e\x6e\x6f\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\ -\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x30\x2e\x39\x35\x65\ -\x6d\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x31\ -\x2e\x33\x65\x6d\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ -\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x23\x42\x43\x45\ -\x38\x46\x31\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\ -\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x44\x39\x45\x44\ -\x46\x37\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ -\x20\x30\x70\x78\x20\x35\x70\x78\x20\x30\x20\x35\x70\x78\x3b\x0a\ -\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x33\x41\x38\x37\ -\x41\x44\x3b\x0a\x7d\x0a\x0a\x64\x69\x76\x2e\x61\x64\x6d\x6f\x6e\ -\x69\x74\x69\x6f\x6e\x20\x70\x2e\x61\x64\x6d\x6f\x6e\x69\x74\x69\ -\x6f\x6e\x2d\x74\x69\x74\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x66\ -\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x65\x6d\x3b\x0a\x20\ -\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x37\ -\x70\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\ -\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x7d\x0a\ +\x72\x67\x62\x28\x32\x34\x37\x2c\x20\x32\x34\x37\x2c\x20\x32\x34\ +\x39\x29\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\ +\x61\x64\x69\x75\x73\x3a\x20\x34\x70\x78\x20\x34\x70\x78\x20\x34\ +\x70\x78\x20\x34\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x3a\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x72\x67\ +\x62\x28\x32\x32\x35\x2c\x20\x32\x32\x35\x2c\x20\x32\x33\x32\x29\ +\x3b\x0a\x7d\x0a\x0a\x64\x69\x76\x2e\x68\x69\x67\x68\x6c\x69\x67\ +\x68\x74\x20\x7b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\ +\x3a\x20\x30\x70\x78\x20\x31\x30\x70\x78\x20\x30\x70\x78\x3b\x0a\ +\x7d\x0a\x0a\x64\x74\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\ +\x2d\x77\x65\x69\x67\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x20\ +\x20\x20\x20\x2f\x2a\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\ +\x31\x36\x70\x78\x3b\x2a\x2f\x0a\x7d\x0a\x0a\x2e\x63\x6c\x61\x73\ +\x73\x69\x66\x69\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x2f\x2a\x66\ +\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x30\x70\x74\x3b\x2a\ +\x2f\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\x68\ +\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x7d\x0a\x0a\x74\x74\ +\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\ +\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x45\x43\x46\x30\x46\x33\ +\x3b\x0a\x20\x20\x20\x20\x2f\x2a\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ +\x65\x3a\x20\x39\x35\x25\x3b\x2a\x2f\x0a\x20\x20\x20\x20\x70\x61\ +\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\x20\x31\x70\x78\x3b\x0a\ +\x7d\x0a\x0a\x0a\x0a\x64\x69\x76\x2e\x61\x64\x6d\x6f\x6e\x69\x74\ +\x69\x6f\x6e\x2e\x6e\x6f\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x66\ +\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x30\x2e\x39\x35\x65\x6d\ +\x3b\x0a\x20\x20\x20\x20\x6d\x61\x72\x67\x69\x6e\x3a\x20\x31\x2e\ +\x33\x65\x6d\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x3a\ +\x20\x31\x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x23\x42\x43\x45\x38\ +\x46\x31\x3b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x44\x39\x45\x44\x46\ +\x37\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\ +\x30\x70\x78\x20\x35\x70\x78\x20\x30\x20\x35\x70\x78\x3b\x0a\x20\ +\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x33\x41\x38\x37\x41\ +\x44\x3b\x0a\x7d\x0a\x0a\x64\x69\x76\x2e\x61\x64\x6d\x6f\x6e\x69\ +\x74\x69\x6f\x6e\x20\x70\x2e\x61\x64\x6d\x6f\x6e\x69\x74\x69\x6f\ +\x6e\x2d\x74\x69\x74\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\ +\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x20\x31\x65\x6d\x3b\x0a\x20\x20\ +\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\x6f\x70\x3a\x20\x37\x70\ +\x78\x3b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\ +\x68\x74\x3a\x20\x62\x6f\x6c\x64\x3b\x0a\x7d\x0a\ " qt_resource_name = b"\ @@ -338,7 +343,7 @@ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x5f\x34\x43\xab\x1e\ +\x00\x00\x01\x5f\x38\xf2\x66\x2e\ " qt_version = QtCore.qVersion().split('.')
--- a/UI/data/documentViewerStyle.css Sat Oct 21 15:13:56 2017 +0200 +++ b/UI/data/documentViewerStyle.css Sat Oct 21 15:18:15 2017 +0200 @@ -1,7 +1,11 @@ +/* + * This style definition is based on the style sheet file of Spyder. + */ + body { background-color: white; color: rgb(51, 51, 51); - margin: 0px 25px 15px 25px; + margin: 0px 10px 10px 10px; } @@ -49,7 +53,7 @@ margin-bottom: 15px; margin-right: 1px; padding: 1px; - background-color: #fff4c5; + background-color: #fff4d8; border: 1px solid #C9C9C9; border-radius: 6px 6px 6px 6px; box-shadow: 1px 1px 7px #CACACA; @@ -65,7 +69,7 @@ } span.argspec-highlight { - color: red; + color: blue; font-size: 110%; font-weight: 900; } @@ -90,14 +94,14 @@ } h2 { - font-size: 140%; + font-size: 120%; font-weight: normal; border-bottom: 1px solid rgb(220, 220, 220); padding: 4px 0px 4px 0px; } h3 { - font-size: 115%; + font-size: 110%; } h4 {