Page MenuHomePhabricator

No OneTemporary

Size
358 KB
Referenced Files
None
Subscribers
None
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/tags/fred-0.1.0alpha1/compileinfo.sh b/tags/fred-0.1.0alpha1/compileinfo.sh
new file mode 100755
index 0000000..a47e26d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/compileinfo.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+echo '// Automatically generated file. See project file and compileinfo.sh for further informations.'
+#head -n 1 debian/changelog | awk '{
+# Version = $2
+# gsub ("\\(", "", Version)
+# gsub ("\\)", "", Version)
+# print "const char *pCompileInfoVersion = \"" Version "\";"}'
+
+echo '#define APP_NAME "fred"'
+echo '#define APP_TITLE "Forensic Registry EDitor (fred)"'
+echo '#define APP_COPYRIGHT "Copyright (c) 2011 by Gillen Daniel"'
+echo '#define APP_DEVELOPPER_EMAIL "gillen.dan@pinguin.lu"'
+echo '#define APP_DESCRIPTION "Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with special feautures useful during forensic analysis."'
+date '+#define APP_COMPILETIME "%Y/%m/%d %H:%M:%S"'
+
+GOT_VERSION=0
+
+if [[ $GOT_VERSION -eq 0 && -f debian/changelog ]]; then
+ # Get version and release timestamp from debian/changelog file
+ CUR_LINE=0
+ while read LINE; do
+ CUR_LINE=$(($CUR_LINE+1))
+ if [ $CUR_LINE -eq 1 ]; then
+ # first line contains version
+ echo "$LINE" | awk '{ Version = $2
+ gsub ("\\(", "", Version)
+ gsub ("\\)", "", Version)
+ print "#define APP_VERSION \"" Version "\"" }'
+ break
+ fi
+ done <debian/changelog
+ GOT_VERSION=1
+fi
+
+if [ $GOT_VERSION -eq 0 ]; then
+ echo '#define APP_VERSION "0.0.0alpha0"'
+fi
+
diff --git a/tags/fred-0.1.0alpha1/debian/changelog b/tags/fred-0.1.0alpha1/debian/changelog
new file mode 100644
index 0000000..23b1c2d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/changelog
@@ -0,0 +1,5 @@
+fred (0.1.0alpha1) unstable; urgency=low
+
+ * First public release
+
+ -- Daniel Gillen <gillen.dan@pinguin.lu> Sat, 06 Aug 2011 22:00:00 +0200
diff --git a/tags/fred-0.1.0alpha1/debian/compat b/tags/fred-0.1.0alpha1/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/tags/fred-0.1.0alpha1/debian/control b/tags/fred-0.1.0alpha1/debian/control
new file mode 100644
index 0000000..fa46ad5
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/control
@@ -0,0 +1,16 @@
+Source: fred
+Section: x11
+Priority: optional
+Maintainer: Gillen Daniel <gillen.dan@pinguin.lu>
+Uploaders: Gillen Daniel <gillen.dan@pinguin.lu>
+Build-Depends: debhelper (>= 5), libqt4-dev, libhivex-dev
+Standards-Version: 3.8.2
+Homepage: https://www.pinguin.lu
+
+Package: fred
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Forensic Registry EDitor
+ Forensic Registry EDitor (fred) is a M$ registry hive editor
+ for Linux with special feautures useful during forensic
+ analysis.
diff --git a/tags/fred-0.1.0alpha1/debian/copyright b/tags/fred-0.1.0alpha1/debian/copyright
new file mode 100644
index 0000000..d9710fd
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/copyright
@@ -0,0 +1,28 @@
+This package was debianised by Daniel Gillen <gillen.dan@pinguin.lu>
+
+Upstream Author: Daniel Gillen <gillen.dan@pinguin.lu>
+
+Copyright: Copyright (c) 2001 by Daniel Gillen <gillen.dan@pinguin.lu>
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
+
+The Debian packaging is © 2008 by Guy Voncken <vogu00@gmail.com>
+and © 2009 by Michael Prokop <mika@debian.org>
+and is licensed under the GPL, see above.
diff --git a/tags/fred-0.1.0alpha1/debian/files b/tags/fred-0.1.0alpha1/debian/files
new file mode 100644
index 0000000..0c86bd6
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/files
@@ -0,0 +1 @@
+fred_0.1.0alpha1_amd64.deb x11 optional
diff --git a/tags/fred-0.1.0alpha1/debian/fred.debhelper.log b/tags/fred-0.1.0alpha1/debian/fred.debhelper.log
new file mode 100644
index 0000000..4c10df8
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.debhelper.log
@@ -0,0 +1,13 @@
+dh_installdirs
+dh_installchangelogs
+dh_install
+dh_installmenu
+dh_link
+dh_strip
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_shlibdeps
+dh_gencontrol
+dh_md5sums
+dh_builddeb
diff --git a/tags/fred-0.1.0alpha1/debian/fred.dirs b/tags/fred-0.1.0alpha1/debian/fred.dirs
new file mode 100644
index 0000000..a59ccc8
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.dirs
@@ -0,0 +1,3 @@
+usr/bin
+usr/share/applications
+usr/share/pixmaps
diff --git a/tags/fred-0.1.0alpha1/debian/fred.install b/tags/fred-0.1.0alpha1/debian/fred.install
new file mode 100644
index 0000000..7b9c38e
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.install
@@ -0,0 +1,2 @@
+resources/fred.desktop usr/share/applications/
+resources/fred.png usr/share/pixmaps/
diff --git a/tags/fred-0.1.0alpha1/debian/fred.menu b/tags/fred-0.1.0alpha1/debian/fred.menu
new file mode 100644
index 0000000..0e5adb1
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.menu
@@ -0,0 +1,3 @@
+?package(fred):needs="X11" section="Applications/System/Security"\
+ title="fred" command="/usr/bin/fred"\
+ hints="System"
diff --git a/tags/fred-0.1.0alpha1/debian/fred.postinst.debhelper b/tags/fred-0.1.0alpha1/debian/fred.postinst.debhelper
new file mode 100644
index 0000000..8637a4e
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.postinst.debhelper
@@ -0,0 +1,5 @@
+# Automatically added by dh_installmenu
+if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then
+ update-menus
+fi
+# End automatically added section
diff --git a/tags/fred-0.1.0alpha1/debian/fred.postrm.debhelper b/tags/fred-0.1.0alpha1/debian/fred.postrm.debhelper
new file mode 100644
index 0000000..2b4be4f
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.postrm.debhelper
@@ -0,0 +1,3 @@
+# Automatically added by dh_installmenu
+if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi
+# End automatically added section
diff --git a/tags/fred-0.1.0alpha1/debian/fred.substvars b/tags/fred-0.1.0alpha1/debian/fred.substvars
new file mode 100644
index 0000000..37fa2db
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred.substvars
@@ -0,0 +1,2 @@
+shlibs:Depends=libc6 (>= 2.2.5), libgcc1 (>= 1:4.1.1), libhivex0, libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.5.3), libstdc++6 (>= 4.1.1)
+misc:Depends=
diff --git a/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/control b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/control
new file mode 100644
index 0000000..10f6b3d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/control
@@ -0,0 +1,13 @@
+Package: fred
+Version: 0.1.0alpha1
+Architecture: amd64
+Maintainer: Gillen Daniel <gillen.dan@pinguin.lu>
+Installed-Size: 428
+Depends: libc6 (>= 2.2.5), libgcc1 (>= 1:4.1.1), libhivex0, libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.5.3), libstdc++6 (>= 4.1.1)
+Section: x11
+Priority: optional
+Homepage: https://www.pinguin.lu
+Description: Forensic Registry EDitor
+ Forensic Registry EDitor (fred) is a M$ registry hive editor
+ for Linux with special feautures useful during forensic
+ analysis.
diff --git a/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/md5sums b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/md5sums
new file mode 100644
index 0000000..a4acf93
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/md5sums
@@ -0,0 +1,5 @@
+9a715e575262458d466bf68bac351f6e usr/bin/fred
+e4e03897a140d64829dee9b581c298b4 usr/share/applications/fred.desktop
+43343292a7956e02519a44afe847855c usr/share/doc/fred/changelog.gz
+3902800ff5779b946717ccec4982d4a1 usr/share/menu/fred
+9b788a3a6b3094b34775674a546644f3 usr/share/pixmaps/fred.png
diff --git a/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postinst b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postinst
new file mode 100755
index 0000000..d0d5f4d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+# Automatically added by dh_installmenu
+if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then
+ update-menus
+fi
+# End automatically added section
diff --git a/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postrm b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postrm
new file mode 100755
index 0000000..a30dbac
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/DEBIAN/postrm
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -e
+# Automatically added by dh_installmenu
+if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi
+# End automatically added section
diff --git a/tags/fred-0.1.0alpha1/debian/fred/usr/bin/fred b/tags/fred-0.1.0alpha1/debian/fred/usr/bin/fred
new file mode 100755
index 0000000..4e55d39
Binary files /dev/null and b/tags/fred-0.1.0alpha1/debian/fred/usr/bin/fred differ
diff --git a/tags/fred-0.1.0alpha1/debian/fred/usr/share/applications/fred.desktop b/tags/fred-0.1.0alpha1/debian/fred/usr/share/applications/fred.desktop
new file mode 100644
index 0000000..8e16128
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/usr/share/applications/fred.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=Fred
+Type=Application
+Comment=M$ registry hive editor
+Terminal=false
+Exec=fred
+Icon=fred
+Categories=System;
+StartupNotify=true
diff --git a/tags/fred-0.1.0alpha1/debian/fred/usr/share/doc/fred/changelog.gz b/tags/fred-0.1.0alpha1/debian/fred/usr/share/doc/fred/changelog.gz
new file mode 100644
index 0000000..2a5bb80
Binary files /dev/null and b/tags/fred-0.1.0alpha1/debian/fred/usr/share/doc/fred/changelog.gz differ
diff --git a/tags/fred-0.1.0alpha1/debian/fred/usr/share/menu/fred b/tags/fred-0.1.0alpha1/debian/fred/usr/share/menu/fred
new file mode 100644
index 0000000..0e5adb1
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/fred/usr/share/menu/fred
@@ -0,0 +1,3 @@
+?package(fred):needs="X11" section="Applications/System/Security"\
+ title="fred" command="/usr/bin/fred"\
+ hints="System"
diff --git a/tags/fred-0.1.0alpha1/debian/fred/usr/share/pixmaps/fred.png b/tags/fred-0.1.0alpha1/debian/fred/usr/share/pixmaps/fred.png
new file mode 100644
index 0000000..6e1124c
Binary files /dev/null and b/tags/fred-0.1.0alpha1/debian/fred/usr/share/pixmaps/fred.png differ
diff --git a/tags/fred-0.1.0alpha1/debian/rules b/tags/fred-0.1.0alpha1/debian/rules
new file mode 100755
index 0000000..ef35770
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/debian/rules
@@ -0,0 +1,98 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+ qmake-qt4
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ # Optimised make for fast compilation on multi-core machines
+ $(MAKE) -j$(shell cat /proc/cpuinfo | grep ^processor | wc -l)
+ lrelease fred.pro
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+ # dpkg-buildpackage starts with cleaning, so we have to be sure that there's a Makefile (and thus call qmake-qt4)
+ qmake-qt4
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+ # remove leftover files:
+ rm -f fred
+ rm -f compileinfo.cpp
+ #rm -f fred_*.qm
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/fred.
+ # $(MAKE) DESTDIR=$(CURDIR)/debian/fred install
+
+ cp fred debian/fred/usr/bin
+ #cp fred_*.qm debian/fred/usr/share/fred
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+# dh_installdocs
+# dh_installexamples
+ dh_install
+ dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+# dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
+
diff --git a/tags/fred-0.1.0alpha1/dlgabout.cpp b/tags/fred-0.1.0alpha1/dlgabout.cpp
new file mode 100644
index 0000000..d1bd47f
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgabout.cpp
@@ -0,0 +1,72 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "dlgabout.h"
+#include "ui_dlgabout.h"
+
+#include "compileinfo.h"
+
+DlgAbout::DlgAbout(QWidget *parent) :
+ QDialog(parent),
+ m_ui(new Ui::DlgAbout)
+{
+ m_ui->setupUi(this);
+ this->setWindowTitle(tr("About %1").arg(APP_NAME));
+
+ // Update dialog with current infos
+ this->m_ui->LblAbout->setText(
+ this->m_ui->LblAbout->text().replace("%APP_NAME%",APP_NAME));
+ this->m_ui->LblAbout->setText(
+ this->m_ui->LblAbout->text().replace("%APP_COPYRIGHT%",APP_COPYRIGHT));
+ this->m_ui->TextEditInfo->setPlainText(
+ this->m_ui->TextEditInfo->toPlainText().replace("%APP_NAME%",APP_NAME));
+ this->m_ui->TextEditInfo->setPlainText(
+ this->m_ui->TextEditInfo->toPlainText().replace("%APP_VERSION%",
+ APP_VERSION));
+ this->m_ui->TextEditInfo->setPlainText(
+ this->m_ui->TextEditInfo->toPlainText().replace("%APP_DESCRIPTION%",
+ APP_DESCRIPTION));
+ this->m_ui->TextEditCopyright->setPlainText(
+ this->m_ui->TextEditCopyright->toPlainText().replace("%APP_COPYRIGHT%",
+ APP_COPYRIGHT));
+ this->m_ui->TextEditCopyright->setPlainText(
+ this->m_ui->TextEditCopyright->toPlainText()
+ .replace("%APP_DEVELOPPER_EMAIL%",
+ APP_DEVELOPPER_EMAIL));
+}
+
+DlgAbout::~DlgAbout() {
+ delete m_ui;
+}
+
+void DlgAbout::changeEvent(QEvent *e) {
+ QDialog::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ m_ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+void DlgAbout::on_btnClose_clicked() {
+ this->accept();
+}
diff --git a/tags/fred-0.1.0alpha1/dlgabout.h b/tags/fred-0.1.0alpha1/dlgabout.h
new file mode 100644
index 0000000..5e0f317
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgabout.h
@@ -0,0 +1,47 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef DLGABOUT_H
+#define DLGABOUT_H
+
+#include <QDialog>
+
+namespace Ui {
+ class DlgAbout;
+}
+
+class DlgAbout : public QDialog {
+ Q_OBJECT
+
+ public:
+ DlgAbout(QWidget *parent = 0);
+ ~DlgAbout();
+
+ protected:
+ void changeEvent(QEvent *e);
+
+ private:
+ Ui::DlgAbout *m_ui;
+
+ private slots:
+ void on_btnClose_clicked();
+};
+
+#endif // DLGABOUT_H
diff --git a/tags/fred-0.1.0alpha1/dlgabout.ui b/tags/fred-0.1.0alpha1/dlgabout.ui
new file mode 100644
index 0000000..378d7b9
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgabout.ui
@@ -0,0 +1,803 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgAbout</class>
+ <widget class="QDialog" name="DlgAbout">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>540</width>
+ <height>363</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="maximumSize">
+ <size>
+ <width>80</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="fred.qrc">:/icons/resources/fred.png</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="LblAbout">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="text">
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:12pt; font-weight:600;&quot;&gt;About %APP_NAME%&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;%APP_COPYRIGHT%&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="indent">
+ <number>10</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Info</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QTextEdit" name="TextEditInfo">
+ <property name="minimumSize">
+ <size>
+ <width>500</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="html">
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;%APP_NAME% version %APP_VERSION%&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;%APP_DESCRIPTION%&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;%APP_NAME% is licensed under GPLv3.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Look at the documentation, the source code or the %APP_NAME% website (https://www.pinguin.lu) for more information.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_3">
+ <attribute name="title">
+ <string>Copyright</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QTextEdit" name="TextEditCopyright">
+ <property name="minimumSize">
+ <size>
+ <width>500</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="html">
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;%APP_COPYRIGHT% &amp;lt;%APP_DEVELOPPER_EMAIL%&amp;gt;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;This program uses &lt;/span&gt;Richard W.M. Jones's&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; hivex library&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Copyright (C) 2009-2010 Red Hat Inc.&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Derived from code by Petter Nordahl-Hagen under a compatible license:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Copyright (C) 1997-2007 Petter Nordahl-Hagen.&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Derived from code by Markus Stephany under a compatible license:&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Copyright (C) 2000-2004 Markus Stephany.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_4">
+ <attribute name="title">
+ <string>GPL</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QTextEdit" name="textEdit_3">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="html">
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; GNU GENERAL PUBLIC LICENSE&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Version 3, 29 June 2007&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Copyright (C) 2007 Free Software Foundation, Inc. &amp;lt;http://fsf.org/&amp;gt;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Everyone is permitted to copy and distribute verbatim copies&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; of this license document, but changing it is not allowed.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Preamble&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The GNU General Public License is a free, copyleft license for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;software and other kinds of works.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The licenses for most software and other practical works are designed&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to take away your freedom to share and change the works. By contrast,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the GNU General Public License is intended to guarantee your freedom to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;share and change all versions of a program--to make sure it remains free&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;software for all its users. We, the Free Software Foundation, use the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;GNU General Public License for most of our software; it applies also to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;any other work released this way by its authors. You can apply it to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;your programs, too.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; When we speak of free software, we are referring to freedom, not&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;price. Our General Public Licenses are designed to make sure that you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;have the freedom to distribute copies of free software (and charge for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;them if you wish), that you receive source code or can get it if you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;want it, that you can change the software or use pieces of it in new&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;free programs, and that you know you can do these things.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; To protect your rights, we need to prevent others from denying you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;these rights or asking you to surrender the rights. Therefore, you have&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;certain responsibilities if you distribute copies of the software, or if&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;you modify it: responsibilities to respect the freedom of others.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; For example, if you distribute copies of such a program, whether&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;gratis or for a fee, you must pass on to the recipients the same&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;freedoms that you received. You must make sure that they, too, receive&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;or can get the source code. And you must show them these terms so they&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;know their rights.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Developers that use the GNU GPL protect your rights with two steps:&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;(1) assert copyright on the software, and (2) offer you this License&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;giving you legal permission to copy, distribute and/or modify it.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; For the developers' and authors' protection, the GPL clearly explains&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;that there is no warranty for this free software. For both users' and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;authors' sake, the GPL requires that modified versions be marked as&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;changed, so that their problems will not be attributed erroneously to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;authors of previous versions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Some devices are designed to deny users access to install or run&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modified versions of the software inside them, although the manufacturer&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;can do so. This is fundamentally incompatible with the aim of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;protecting users' freedom to change the software. The systematic&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;pattern of such abuse occurs in the area of products for individuals to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;use, which is precisely where it is most unacceptable. Therefore, we&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;have designed this version of the GPL to prohibit the practice for those&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;products. If such problems arise substantially in other domains, we&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;stand ready to extend this provision to those domains in future versions&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;of the GPL, as needed to protect the freedom of users.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Finally, every program is threatened constantly by software patents.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;States should not allow patents to restrict development and use of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;software on general-purpose computers, but in those that do, we wish to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;avoid the special danger that patents applied to a free program could&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;make it effectively proprietary. To prevent this, the GPL assures that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patents cannot be used to render the program non-free.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The precise terms and conditions for copying, distribution and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modification follow.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; TERMS AND CONDITIONS&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 0. Definitions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;This License&amp;quot; refers to version 3 of the GNU General Public License.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;Copyright&amp;quot; also means copyright-like laws that apply to other kinds of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;works, such as semiconductor masks.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;The Program&amp;quot; refers to any copyrightable work licensed under this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License. Each licensee is addressed as &amp;quot;you&amp;quot;. &amp;quot;Licensees&amp;quot; and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&amp;quot;recipients&amp;quot; may be individuals or organizations.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; To &amp;quot;modify&amp;quot; a work means to copy from or adapt all or part of the work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in a fashion requiring copyright permission, other than the making of an&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;exact copy. The resulting work is called a &amp;quot;modified version&amp;quot; of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;earlier work or a work &amp;quot;based on&amp;quot; the earlier work.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A &amp;quot;covered work&amp;quot; means either the unmodified Program or a work based&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;on the Program.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; To &amp;quot;propagate&amp;quot; a work means to do anything with it that, without&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;permission, would make you directly or secondarily liable for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;infringement under applicable copyright law, except executing it on a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;computer or modifying a private copy. Propagation includes copying,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;distribution (with or without modification), making available to the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;public, and in some countries other activities as well.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; To &amp;quot;convey&amp;quot; a work means any kind of propagation that enables other&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;parties to make or receive copies. Mere interaction with a user through&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;a computer network, with no transfer of a copy, is not conveying.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; An interactive user interface displays &amp;quot;Appropriate Legal Notices&amp;quot;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to the extent that it includes a convenient and prominently visible&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;feature that (1) displays an appropriate copyright notice, and (2)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;tells the user that there is no warranty for the work (except to the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;extent that warranties are provided), that licensees may convey the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work under this License, and how to view a copy of this License. If&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the interface presents a list of user commands or options, such as a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;menu, a prominent item in the list meets this criterion.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 1. Source Code.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The &amp;quot;source code&amp;quot; for a work means the preferred form of the work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for making modifications to it. &amp;quot;Object code&amp;quot; means any non-source&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;form of a work.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A &amp;quot;Standard Interface&amp;quot; means an interface that either is an official&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;standard defined by a recognized standards body, or, in the case of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;interfaces specified for a particular programming language, one that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;is widely used among developers working in that language.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The &amp;quot;System Libraries&amp;quot; of an executable work include anything, other&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;than the work as a whole, that (a) is included in the normal form of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;packaging a Major Component, but which is not part of that Major&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Component, and (b) serves only to enable use of the work with that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Major Component, or to implement a Standard Interface for which an&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;implementation is available to the public in source code form. A&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&amp;quot;Major Component&amp;quot;, in this context, means a major essential component&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;(kernel, window system, and so on) of the specific operating system&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;(if any) on which the executable work runs, or a compiler used to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;produce the work, or an object code interpreter used to run it.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The &amp;quot;Corresponding Source&amp;quot; for a work in object code form means all&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the source code needed to generate, install, and (for an executable&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work) run the object code and to modify the work, including scripts to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;control those activities. However, it does not include the work's&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;System Libraries, or general-purpose tools or generally available free&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;programs which are used unmodified in performing those activities but&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;which are not part of the work. For example, Corresponding Source&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;includes interface definition files associated with source files for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the work, and the source code for shared libraries and dynamically&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;linked subprograms that the work is specifically designed to require,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;such as by intimate data communication or control flow between those&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;subprograms and other parts of the work.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The Corresponding Source need not include anything that users&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;can regenerate automatically from other parts of the Corresponding&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Source.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The Corresponding Source for a work in source code form is that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;same work.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 2. Basic Permissions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; All rights granted under this License are granted for the term of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;copyright on the Program, and are irrevocable provided the stated&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;conditions are met. This License explicitly affirms your unlimited&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;permission to run the unmodified Program. The output from running a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;covered work is covered by this License only if the output, given its&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;content, constitutes a covered work. This License acknowledges your&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;rights of fair use or other equivalent, as provided by copyright law.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may make, run and propagate covered works that you do not&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;convey, without conditions so long as your license otherwise remains&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in force. You may convey covered works to others for the sole purpose&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;of having them make modifications exclusively for you, or provide you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;with facilities for running those works, provided that you comply with&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the terms of this License in conveying all material for which you do&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;not control copyright. Those thus making or running the covered works&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for you must do so exclusively on your behalf, under your direction&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;and control, on terms that prohibit them from making any copies of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;your copyrighted material outside their relationship with you.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Conveying under any other circumstances is permitted solely under&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the conditions stated below. Sublicensing is not allowed; section 10&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;makes it unnecessary.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 3. Protecting Users' Legal Rights From Anti-Circumvention Law.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; No covered work shall be deemed part of an effective technological&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;measure under any applicable law fulfilling obligations under article&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;11 of the WIPO copyright treaty adopted on 20 December 1996, or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;similar laws prohibiting or restricting circumvention of such&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;measures.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; When you convey a covered work, you waive any legal power to forbid&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;circumvention of technological measures to the extent such circumvention&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;is effected by exercising rights under this License with respect to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the covered work, and you disclaim any intention to limit operation or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modification of the work as a means of enforcing, against the work's&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;users, your or third parties' legal rights to forbid circumvention of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;technological measures.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 4. Conveying Verbatim Copies.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may convey verbatim copies of the Program's source code as you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;receive it, in any medium, provided that you conspicuously and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;appropriately publish on each copy an appropriate copyright notice;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;keep intact all notices stating that this License and any&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;non-permissive terms added in accord with section 7 apply to the code;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;keep intact all notices of the absence of any warranty; and give all&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;recipients a copy of this License along with the Program.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may charge any price or no price for each copy that you convey,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;and you may offer support or warranty protection for a fee.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 5. Conveying Modified Source Versions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may convey a work based on the Program, or the modifications to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;produce it from the Program, in the form of source code under the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;terms of section 4, provided that you also meet all of these conditions:&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; a) The work must carry prominent notices stating that you modified&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; it, and giving a relevant date.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; b) The work must carry prominent notices stating that it is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; released under this License and any conditions added under section&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 7. This requirement modifies the requirement in section 4 to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;keep intact all notices&amp;quot;.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; c) You must license the entire work, as a whole, under this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; License to anyone who comes into possession of a copy. This&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; License will therefore apply, along with any applicable section 7&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; additional terms, to the whole of the work, and all its parts,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; regardless of how they are packaged. This License gives no&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; permission to license the work in any other way, but it does not&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; invalidate such permission if you have separately received it.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; d) If the work has interactive user interfaces, each must display&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Appropriate Legal Notices; however, if the Program has interactive&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; interfaces that do not display Appropriate Legal Notices, your&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; work need not make them do so.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A compilation of a covered work with other separate and independent&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;works, which are not by their nature extensions of the covered work,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;and which are not combined with it such as to form a larger program,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in or on a volume of a storage or distribution medium, is called an&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&amp;quot;aggregate&amp;quot; if the compilation and its resulting copyright are not&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;used to limit the access or legal rights of the compilation's users&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;beyond what the individual works permit. Inclusion of a covered work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in an aggregate does not cause this License to apply to the other&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;parts of the aggregate.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 6. Conveying Non-Source Forms.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may convey a covered work in object code form under the terms&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;of sections 4 and 5, provided that you also convey the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;machine-readable Corresponding Source under the terms of this License,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in one of these ways:&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; a) Convey the object code in, or embodied in, a physical product&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; (including a physical distribution medium), accompanied by the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source fixed on a durable physical medium&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; customarily used for software interchange.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; b) Convey the object code in, or embodied in, a physical product&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; (including a physical distribution medium), accompanied by a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; written offer, valid for at least three years and valid for as&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; long as you offer spare parts or customer support for that product&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; model, to give anyone who possesses the object code either (1) a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; copy of the Corresponding Source for all the software in the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; product that is covered by this License, on a durable physical&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; medium customarily used for software interchange, for a price no&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; more than your reasonable cost of physically performing this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; conveying of source, or (2) access to copy the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source from a network server at no charge.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; c) Convey individual copies of the object code with a copy of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; written offer to provide the Corresponding Source. This&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; alternative is allowed only occasionally and noncommercially, and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; only if you received the object code with such an offer, in accord&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; with subsection 6b.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; d) Convey the object code by offering access from a designated&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; place (gratis or for a charge), and offer equivalent access to the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source in the same way through the same place at no&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; further charge. You need not require recipients to copy the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source along with the object code. If the place to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; copy the object code is a network server, the Corresponding Source&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; may be on a different server (operated by you or a third party)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; that supports equivalent copying facilities, provided you maintain&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; clear directions next to the object code saying where to find the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source. Regardless of what server hosts the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source, you remain obligated to ensure that it is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; available for as long as needed to satisfy these requirements.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; e) Convey the object code using peer-to-peer transmission, provided&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; you inform other peers where the object code and Corresponding&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Source of the work are being offered to the general public at no&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; charge under subsection 6d.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A separable portion of the object code, whose source code is excluded&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;from the Corresponding Source as a System Library, need not be&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;included in conveying the object code work.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A &amp;quot;User Product&amp;quot; is either (1) a &amp;quot;consumer product&amp;quot;, which means any&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;tangible personal property which is normally used for personal, family,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;or household purposes, or (2) anything designed or sold for incorporation&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;into a dwelling. In determining whether a product is a consumer product,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;doubtful cases shall be resolved in favor of coverage. For a particular&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;product received by a particular user, &amp;quot;normally used&amp;quot; refers to a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;typical or common use of that class of product, regardless of the status&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;of the particular user or of the way in which the particular user&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;actually uses, or expects or is expected to use, the product. A product&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;is a consumer product regardless of whether the product has substantial&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;commercial, industrial or non-consumer uses, unless such uses represent&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the only significant mode of use of the product.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;Installation Information&amp;quot; for a User Product means any methods,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;procedures, authorization keys, or other information required to install&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;and execute modified versions of a covered work in that User Product from&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;a modified version of its Corresponding Source. The information must&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;suffice to ensure that the continued functioning of the modified object&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;code is in no case prevented or interfered with solely because&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modification has been made.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If you convey an object code work under this section in, or with, or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;specifically for use in, a User Product, and the conveying occurs as&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;part of a transaction in which the right of possession and use of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;User Product is transferred to the recipient in perpetuity or for a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;fixed term (regardless of how the transaction is characterized), the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Corresponding Source conveyed under this section must be accompanied&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;by the Installation Information. But this requirement does not apply&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;if neither you nor any third party retains the ability to install&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modified object code on the User Product (for example, the work has&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;been installed in ROM).&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The requirement to provide Installation Information does not include a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;requirement to continue to provide support service, warranty, or updates&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for a work that has been modified or installed by the recipient, or for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the User Product in which it has been modified or installed. Access to a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;network may be denied when the modification itself materially and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;adversely affects the operation of the network or violates the rules and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;protocols for communication across the network.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Corresponding Source conveyed, and Installation Information provided,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in accord with this section must be in a format that is publicly&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;documented (and with an implementation available to the public in&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;source code form), and must require no special password or key for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;unpacking, reading or copying.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 7. Additional Terms.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &amp;quot;Additional permissions&amp;quot; are terms that supplement the terms of this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License by making exceptions from one or more of its conditions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Additional permissions that are applicable to the entire Program shall&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;be treated as though they were included in this License, to the extent&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;that they are valid under applicable law. If additional permissions&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;apply only to part of the Program, that part may be used separately&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;under those permissions, but the entire Program remains governed by&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;this License without regard to the additional permissions.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; When you convey a copy of a covered work, you may at your option&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;remove any additional permissions from that copy, or from any part of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;it. (Additional permissions may be written to require their own&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;removal in certain cases when you modify the work.) You may place&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;additional permissions on material, added by you to a covered work,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for which you have or can give appropriate copyright permission.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Notwithstanding any other provision of this License, for material you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;add to a covered work, you may (if authorized by the copyright holders of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;that material) supplement the terms of this License with terms:&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; a) Disclaiming warranty or limiting liability differently from the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; terms of sections 15 and 16 of this License; or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; b) Requiring preservation of specified reasonable legal notices or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; author attributions in that material or in the Appropriate Legal&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Notices displayed by works containing it; or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; c) Prohibiting misrepresentation of the origin of that material, or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; requiring that modified versions of such material be marked in&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; reasonable ways as different from the original version; or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; d) Limiting the use for publicity purposes of names of licensors or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; authors of the material; or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; e) Declining to grant rights under trademark law for use of some&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; trade names, trademarks, or service marks; or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; f) Requiring indemnification of licensors and authors of that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; material by anyone who conveys the material (or modified versions of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; it) with contractual assumptions of liability to the recipient, for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; any liability that these contractual assumptions directly impose on&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; those licensors and authors.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; All other non-permissive additional terms are considered &amp;quot;further&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;restrictions&amp;quot; within the meaning of section 10. If the Program as you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;received it, or any part of it, contains a notice stating that it is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;governed by this License along with a term that is a further&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;restriction, you may remove that term. If a license document contains&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;a further restriction but permits relicensing or conveying under this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License, you may add to a covered work material governed by the terms&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;of that license document, provided that the further restriction does&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;not survive such relicensing or conveying.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If you add terms to a covered work in accord with this section, you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;must place, in the relevant source files, a statement of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;additional terms that apply to those files, or a notice indicating&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;where to find the applicable terms.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Additional terms, permissive or non-permissive, may be stated in the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;form of a separately written license, or stated as exceptions;&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the above requirements apply either way.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 8. Termination.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may not propagate or modify a covered work except as expressly&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;provided under this License. Any attempt otherwise to propagate or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modify it is void, and will automatically terminate your rights under&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;this License (including any patent licenses granted under the third&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;paragraph of section 11).&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; However, if you cease all violation of this License, then your&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;license from a particular copyright holder is reinstated (a)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;provisionally, unless and until the copyright holder explicitly and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;finally terminates your license, and (b) permanently, if the copyright&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;holder fails to notify you of the violation by some reasonable means&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;prior to 60 days after the cessation.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Moreover, your license from a particular copyright holder is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;reinstated permanently if the copyright holder notifies you of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;violation by some reasonable means, this is the first time you have&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;received notice of violation of this License (for any work) from that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;copyright holder, and you cure the violation prior to 30 days after&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;your receipt of the notice.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Termination of your rights under this section does not terminate the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;licenses of parties who have received copies or rights from you under&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;this License. If your rights have been terminated and not permanently&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;reinstated, you do not qualify to receive new licenses for the same&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;material under section 10.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 9. Acceptance Not Required for Having Copies.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You are not required to accept this License in order to receive or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;run a copy of the Program. Ancillary propagation of a covered work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;occurring solely as a consequence of using peer-to-peer transmission&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to receive a copy likewise does not require acceptance. However,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;nothing other than this License grants you permission to propagate or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;modify any covered work. These actions infringe copyright if you do&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;not accept this License. Therefore, by modifying or propagating a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;covered work, you indicate your acceptance of this License to do so.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 10. Automatic Licensing of Downstream Recipients.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Each time you convey a covered work, the recipient automatically&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;receives a license from the original licensors, to run, modify and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;propagate that work, subject to this License. You are not responsible&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for enforcing compliance by third parties with this License.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; An &amp;quot;entity transaction&amp;quot; is a transaction transferring control of an&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;organization, or substantially all assets of one, or subdividing an&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;organization, or merging organizations. If propagation of a covered&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work results from an entity transaction, each party to that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;transaction who receives a copy of the work also receives whatever&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;licenses to the work the party's predecessor in interest had or could&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;give under the previous paragraph, plus a right to possession of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Corresponding Source of the work from the predecessor in interest, if&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the predecessor has it or can get it with reasonable efforts.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; You may not impose any further restrictions on the exercise of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;rights granted or affirmed under this License. For example, you may&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;not impose a license fee, royalty, or other charge for exercise of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;rights granted under this License, and you may not initiate litigation&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;(including a cross-claim or counterclaim in a lawsuit) alleging that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;any patent claim is infringed by making, using, selling, offering for&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;sale, or importing the Program or any portion of it.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 11. Patents.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A &amp;quot;contributor&amp;quot; is a copyright holder who authorizes use under this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License of the Program or a work on which the Program is based. The&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work thus licensed is called the contributor's &amp;quot;contributor version&amp;quot;.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A contributor's &amp;quot;essential patent claims&amp;quot; are all patent claims&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;owned or controlled by the contributor, whether already acquired or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;hereafter acquired, that would be infringed by some manner, permitted&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;by this License, of making, using, or selling its contributor version,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;but do not include claims that would be infringed only as a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;consequence of further modification of the contributor version. For&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;purposes of this definition, &amp;quot;control&amp;quot; includes the right to grant&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patent sublicenses in a manner consistent with the requirements of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;this License.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Each contributor grants you a non-exclusive, worldwide, royalty-free&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patent license under the contributor's essential patent claims, to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;make, use, sell, offer for sale, import and otherwise run, modify and&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;propagate the contents of its contributor version.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; In the following three paragraphs, a &amp;quot;patent license&amp;quot; is any express&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;agreement or commitment, however denominated, not to enforce a patent&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;(such as an express permission to practice a patent or covenant not to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;sue for patent infringement). To &amp;quot;grant&amp;quot; such a patent license to a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;party means to make such an agreement or commitment not to enforce a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patent against the party.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If you convey a covered work, knowingly relying on a patent license,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;and the Corresponding Source of the work is not available for anyone&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to copy, free of charge and under the terms of this License, through a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;publicly available network server or other readily accessible means,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;then you must either (1) cause the Corresponding Source to be so&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;available, or (2) arrange to deprive yourself of the benefit of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patent license for this particular work, or (3) arrange, in a manner&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;consistent with the requirements of this License, to extend the patent&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;license to downstream recipients. &amp;quot;Knowingly relying&amp;quot; means you have&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;actual knowledge that, but for the patent license, your conveying the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;covered work in a country, or your recipient's use of the covered work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in a country, would infringe one or more identifiable patents in that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;country that you have reason to believe are valid.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If, pursuant to or in connection with a single transaction or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;arrangement, you convey, or propagate by procuring conveyance of, a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;covered work, and grant a patent license to some of the parties&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;receiving the covered work authorizing them to use, propagate, modify&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;or convey a specific copy of the covered work, then the patent license&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;you grant is automatically extended to all recipients of the covered&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work and works based on it.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; A patent license is &amp;quot;discriminatory&amp;quot; if it does not include within&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the scope of its coverage, prohibits the exercise of, or is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;conditioned on the non-exercise of one or more of the rights that are&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;specifically granted under this License. You may not convey a covered&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;work if you are a party to an arrangement with a third party that is&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;in the business of distributing software, under which you make payment&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to the third party based on the extent of your activity of conveying&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the work, and under which the third party grants, to any of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;parties who would receive the covered work from you, a discriminatory&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;patent license (a) in connection with copies of the covered work&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;conveyed by you (or copies made from those copies), or (b) primarily&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;for and in connection with specific products or compilations that&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;contain the covered work, unless you entered into that arrangement,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;or that patent license was granted, prior to 28 March 2007.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Nothing in this License shall be construed as excluding or limiting&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;any implied license or other defenses to infringement that may&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;otherwise be available to you under applicable patent law.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 12. No Surrender of Others' Freedom.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If conditions are imposed on you (whether by court order, agreement or&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;otherwise) that contradict the conditions of this License, they do not&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;excuse you from the conditions of this License. If you cannot convey a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;covered work so as to satisfy simultaneously your obligations under this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License and any other pertinent obligations, then as a consequence you may&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;not convey it at all. For example, if you agree to terms that obligate you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to collect a royalty for further conveying from those to whom you convey&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the Program, the only way you could satisfy both those terms and this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License would be to refrain entirely from conveying the Program.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 13. Use with the GNU Affero General Public License.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Notwithstanding any other provision of this License, you have&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;permission to link or combine any covered work with a work licensed&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;under version 3 of the GNU Affero General Public License into a single&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;combined work, and to convey the resulting work. The terms of this&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;License will continue to apply to the part which is the covered work,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;but the special requirements of the GNU Affero General Public License,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;section 13, concerning interaction through a network will apply to the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;combination as such.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 14. Revised Versions of this License.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; The Free Software Foundation may publish revised and/or new versions of&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;the GNU General Public License from time to time. Such new versions will&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;be similar in spirit to the present version, but may differ in detail to&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;address new problems or concerns.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Each version is given a distinguishing version number. If the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Program specifies that a certain numbered version of the GNU General&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Public License &amp;quot;or any later version&amp;quot; applies to it, you have the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;option of following the terms and conditions either of that numbered&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;version or of any later version published by the Free Software&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Foundation. If the Program does not specify a version number of the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;GNU General Public License, you may choose any version ever published&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;by the Free Software Foundation.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If the Program specifies that a proxy can decide which future&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;versions of the GNU General Public License can be used, that proxy's&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;public statement of acceptance of a version permanently authorizes you&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;to choose that version for the Program.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; Later license versions may give you additional or different&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;permissions. However, no additional obligations are imposed on any&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;author or copyright holder as a result of your choosing to follow a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;later version.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 15. Disclaimer of Warranty.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &amp;quot;AS IS&amp;quot; WITHOUT WARRANTY&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;ALL NECESSARY SERVICING, REPAIR OR CORRECTION.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 16. Limitation of Liability.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;SUCH DAMAGES.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; 17. Interpretation of Sections 15 and 16.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; If the disclaimer of warranty and limitation of liability provided&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;above cannot be given local legal effect according to their terms,&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;reviewing courts shall apply local law that most closely approximates&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;an absolute waiver of all civil liability in connection with the&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Program, unless a warranty or assumption of liability accompanies a&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;copy of the Program in return for a fee.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnClose">
+ <property name="text">
+ <string>&amp;Close</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/icons/cross.png</normaloff>:/icons/cross.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="fred.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/tags/fred-0.1.0alpha1/dlgkeydetails.cpp b/tags/fred-0.1.0alpha1/dlgkeydetails.cpp
new file mode 100644
index 0000000..ef22166
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgkeydetails.cpp
@@ -0,0 +1,86 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "dlgkeydetails.h"
+#include "ui_dlgkeydetails.h"
+
+DlgKeyDetails::DlgKeyDetails(QWidget *p_parent)
+ : QDialog(p_parent), ui(new Ui::DlgKeyDetails)
+{
+ ui->setupUi(this);
+
+ // Init private vars
+ this->parent_nodes=QStringList();
+ this->key_name=QString();
+ this->key_type=QString();
+ this->key_value=QByteArray();
+ this->p_hex_edit=NULL;
+}
+
+DlgKeyDetails::~DlgKeyDetails() {
+ if(this->p_hex_edit!=NULL) delete this->p_hex_edit;
+ delete ui;
+}
+
+void DlgKeyDetails::SetValues(QStringList &r_parent_nodes,
+ QString &r_key_name,
+ QString &r_key_type,
+ QByteArray &r_key_value)
+{
+ // Save params to local vars
+ this->parent_nodes=r_parent_nodes;
+ this->key_name=r_key_name;
+ this->key_type=r_key_type;
+ this->key_value=r_key_value;
+
+ // Set dialog title to complete registry path
+ this->setWindowTitle(parent_nodes.join("/").append("/").append(r_key_name));
+
+ // Create read only hex edit widget
+ this->p_hex_edit=new QHexEdit();
+ this->p_hex_edit->setReadOnly(true);
+
+ // Make sure hex viewer font is monospaced.
+ QFont mono_font("Monospace");
+ mono_font.setStyleHint(QFont::TypeWriter);
+ this->p_hex_edit->setFont(mono_font);
+
+ // Add the hexedit widget to the dialog
+ // As we know the dialog uses a box layout...
+ ((QBoxLayout*)this->layout())->insertWidget(0,this->p_hex_edit);
+
+ // Add data to hex edit
+ this->p_hex_edit->setData(this->key_value);
+}
+
+void DlgKeyDetails::changeEvent(QEvent *e) {
+ QDialog::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+void DlgKeyDetails::on_BtnClose_clicked() {
+ this->accept();
+}
diff --git a/tags/fred-0.1.0alpha1/dlgkeydetails.h b/tags/fred-0.1.0alpha1/dlgkeydetails.h
new file mode 100644
index 0000000..9ead369
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgkeydetails.h
@@ -0,0 +1,60 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef DLGKEYDETAILS_H
+#define DLGKEYDETAILS_H
+
+#include <QDialog>
+#include <QByteArray>
+
+#include "qhexedit/qhexedit.h"
+
+namespace Ui {
+ class DlgKeyDetails;
+}
+
+class DlgKeyDetails : public QDialog {
+ Q_OBJECT
+
+ public:
+ explicit DlgKeyDetails(QWidget *p_parent=0);
+ ~DlgKeyDetails();
+
+ void SetValues(QStringList &r_parent_nodes,
+ QString &r_key_name,
+ QString &r_key_type,
+ QByteArray &r_key_value);
+
+ protected:
+ void changeEvent(QEvent *e);
+
+ private slots:
+ void on_BtnClose_clicked();
+
+ private:
+ Ui::DlgKeyDetails *ui;
+ QStringList parent_nodes;
+ QString key_name;
+ QString key_type;
+ QByteArray key_value;
+ QHexEdit *p_hex_edit;
+};
+
+#endif // DLGKEYDETAILS_H
diff --git a/tags/fred-0.1.0alpha1/dlgkeydetails.ui b/tags/fred-0.1.0alpha1/dlgkeydetails.ui
new file mode 100644
index 0000000..53429ed
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/dlgkeydetails.ui
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgKeyDetails</class>
+ <widget class="QDialog" name="DlgKeyDetails">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>678</width>
+ <height>346</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QPushButton" name="BtnClose">
+ <property name="text">
+ <string>&amp;Close</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tags/fred-0.1.0alpha1/fred.pro b/tags/fred-0.1.0alpha1/fred.pro
new file mode 100644
index 0000000..b21f4b5
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/fred.pro
@@ -0,0 +1,59 @@
+#*******************************************************************************
+# fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+# *
+# Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+# special feautures useful during forensic analysis. *
+# *
+# This program is free software: you can redistribute it and/or modify it *
+# under the terms of the GNU General Public License as published by the Free *
+# Software Foundation, either version 3 of the License, or (at your option) *
+# any later version. *
+# *
+# This program is distributed in the hope that it will be useful, but WITHOUT *
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+# more details. *
+# *
+# You should have received a copy of the GNU General Public License along with *
+# this program. If not, see <http://www.gnu.org/licenses/>. *
+#******************************************************************************/
+
+system(bash compileinfo.sh > compileinfo.h)
+
+QT += core \
+ gui
+
+TARGET = fred
+
+TEMPLATE = app
+
+
+SOURCES += main.cpp\
+ mainwindow.cpp \
+ registrynode.cpp \
+ registrynodetreemodel.cpp \
+ registrykey.cpp \
+ registrykeytablemodel.cpp \
+ dlgabout.cpp \
+ dlgkeydetails.cpp \
+ qhexedit/qhexedit_p.cpp \
+ qhexedit/qhexedit.cpp
+
+HEADERS += mainwindow.h \
+ registrynode.h \
+ registrynodetreemodel.h \
+ registrykey.h \
+ registrykeytablemodel.h \
+ dlgabout.h \
+ dlgkeydetails.h \
+ qhexedit/qhexedit_p.h \
+ qhexedit/qhexedit.h
+
+FORMS += mainwindow.ui \
+ dlgabout.ui \
+ dlgkeydetails.ui
+
+LIBS += -lhivex
+
+RESOURCES += \
+ fred.qrc
diff --git a/tags/fred-0.1.0alpha1/fred.pro.user b/tags/fred-0.1.0alpha1/fred.pro.user
new file mode 100644
index 0000000..2686017
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/fred.pro.user
@@ -0,0 +1,167 @@
+<!DOCTYPE QtCreatorProject>
+<qtcreator>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value key="EditorConfiguration.Codec" type="QByteArray">Default</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Desktop</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.DesktopTarget</value>
+ <value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">0</value>
+ <value key="ProjectExplorer.Target.ActiveDeployConfiguration" type="int">0</value>
+ <value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
+ <valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">qmake</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+ <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+ <value key="QtProjectManager.QMakeBuildStep.QMakeForced" type="bool">false</value>
+ </valuemap>
+ <valuemap key="ProjectExplorer.BuildStepList.Step.1" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Make</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+ <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+ <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+ <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildStepList.StepsCount" type="int">2</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Build</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.1" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Make</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+ <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+ <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+ <value type="QString">clean</value>
+ </valuelist>
+ <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildStepList.StepsCount" type="int">1</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Clean</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">2</value>
+ <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+ <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Release</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/storage/local/projects/fred/fred-build-desktop</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
+ </valuemap>
+ <valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">qmake</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+ <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+ <value key="QtProjectManager.QMakeBuildStep.QMakeForced" type="bool">false</value>
+ </valuemap>
+ <valuemap key="ProjectExplorer.BuildStepList.Step.1" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Make</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+ <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+ <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+ <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildStepList.StepsCount" type="int">2</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Build</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.1" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildStepList.Step.0" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Make</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+ <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+ <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+ <value type="QString">clean</value>
+ </valuelist>
+ <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildStepList.StepsCount" type="int">1</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Clean</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">2</value>
+ <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+ <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Debug</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/storage/local/projects/fred/fred-build-desktop</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
+ <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
+ </valuemap>
+ <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
+ <valuemap key="ProjectExplorer.Target.DeployConfiguration.0" type="QVariantMap">
+ <valuemap key="ProjectExplorer.BuildConfiguration.BuildStepList.0" type="QVariantMap">
+ <value key="ProjectExplorer.BuildStepList.StepsCount" type="int">0</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">Deploy</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value key="ProjectExplorer.BuildConfiguration.BuildStepListCount" type="int">1</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">No deployment</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value key="ProjectExplorer.Target.DeployConfigurationCount" type="int">1</value>
+ <valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
+ <value key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName" type="QString">fred</value>
+ <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString"></value>
+ <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
+ <valuelist key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QVariantList"/>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">fred.pro</value>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
+ <valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetWorkingDirectory" type="bool">false</value>
+ <value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
+ <value key="RunConfiguration.QmlDebugServerPort" type="uint">3768</value>
+ <value key="RunConfiguration.UseCppDebugger" type="bool">true</value>
+ <value key="RunConfiguration.UseQmlDebugger" type="bool">false</value>
+ </valuemap>
+ <value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
+ <value type="QString">{c9903c5a-058e-4079-8277-d1a3b5a202ee}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">8</value>
+ </data>
+</qtcreator>
diff --git a/tags/fred-0.1.0alpha1/fred.qrc b/tags/fred-0.1.0alpha1/fred.qrc
new file mode 100644
index 0000000..27bb0b8
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/fred.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/icons">
+ <file>resources/fred.png</file>
+ </qresource>
+</RCC>
diff --git a/tags/fred-0.1.0alpha1/fred_license_template.txt b/tags/fred-0.1.0alpha1/fred_license_template.txt
new file mode 100644
index 0000000..0a600f0
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/fred_license_template.txt
@@ -0,0 +1,19 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
diff --git a/tags/fred-0.1.0alpha1/main.cpp b/tags/fred-0.1.0alpha1/main.cpp
new file mode 100644
index 0000000..94c37a6
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/main.cpp
@@ -0,0 +1,31 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include <QtGui/QApplication>
+#include "mainwindow.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/tags/fred-0.1.0alpha1/mainwindow.cpp b/tags/fred-0.1.0alpha1/mainwindow.cpp
new file mode 100644
index 0000000..f5c1450
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/mainwindow.cpp
@@ -0,0 +1,248 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QStringList>
+#include <QDesktopWidget>
+#include <QDir>
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include "dlgabout.h"
+#include "dlgkeydetails.h"
+
+#include "compileinfo.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent), ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+
+ // Initialize private vars
+ this->hhive=NULL;
+ this->is_hive_open=false;
+ this->p_reg_node_tree_model=NULL;
+ this->p_reg_key_table_model=NULL;
+
+ // Set window title
+ this->UpdateWindowTitle();
+
+ // Set main window size
+ int cur_screen=QApplication::desktop()->screenNumber(this);
+ int window_width=
+ QApplication::desktop()->availableGeometry(cur_screen).width()*0.5;
+ int window_height=
+ QApplication::desktop()->availableGeometry(cur_screen).height()*0.5;
+ int window_x=
+ (QApplication::desktop()->availableGeometry(cur_screen).width()/2)-
+ (window_width/2);
+ int window_y=
+ (QApplication::desktop()->availableGeometry(cur_screen).height()/2)-
+ (window_height/2);
+ this->setGeometry(window_x,
+ window_y,
+ window_width,
+ window_height);
+
+ // Set last open location to home dir
+ this->last_open_location=QDir::homePath();
+}
+
+MainWindow::~MainWindow() {
+ if(this->is_hive_open) {
+ hivex_close(this->hhive);
+ }
+ delete ui;
+}
+
+void MainWindow::on_action_Quit_triggered() {
+ qApp->exit();
+}
+
+void MainWindow::on_action_Open_hive_triggered() {
+ QString hive_file="";
+
+ hive_file=QFileDialog::getOpenFileName(this,
+ tr("Open registry hive"),
+ this->last_open_location,
+ tr("All files (*)"));
+ if(hive_file=="") return;
+
+ // Update last open location
+ this->last_open_location=hive_file.left(hive_file.
+ lastIndexOf(QDir::separator()));
+
+ // If another hive is currently open, close it
+ if(this->is_hive_open) this->on_action_Close_hive_triggered();
+
+ // Try to open hive
+ this->hhive=hivex_open(hive_file.toAscii().constData(),0);
+ if(this->hhive==NULL) {
+ QMessageBox::critical(this,
+ tr("Error opening hive file"),
+ tr("Unable to open file '%1'").arg(hive_file));
+ return;
+ }
+
+ // Create tree model
+ hive_node_h root_node=hivex_root(hhive);
+ if(root_node==0) {
+ QMessageBox::critical(this,
+ tr("Error opening hive file"),
+ tr("This hive seems to have no root node!")
+ .arg(hive_file));
+ return;
+ }
+ this->p_reg_node_tree_model=
+ new RegistryNodeTreeModel(this->hhive,
+ root_node,
+ this->ui->RegNodeTree);
+ this->ui->RegNodeTree->setModel(this->p_reg_node_tree_model);
+
+ this->is_hive_open=true;
+ this->ui->action_Close_hive->setEnabled(true);
+ this->UpdateWindowTitle(hive_file);
+}
+
+void MainWindow::on_action_Close_hive_triggered() {
+ if(this->is_hive_open) {
+ // Delete models
+ if(this->p_reg_node_tree_model!=NULL) {
+ delete this->p_reg_node_tree_model;
+ this->p_reg_node_tree_model=NULL;
+ }
+ if(this->p_reg_key_table_model!=NULL) {
+ delete this->p_reg_key_table_model;
+ this->p_reg_key_table_model=NULL;
+ }
+
+ // Close hive
+ hivex_close(this->hhive);
+
+ this->is_hive_open=false;
+ this->ui->action_Close_hive->setEnabled(false);
+ this->UpdateWindowTitle();
+ }
+}
+
+void MainWindow::on_actionAbout_Qt_triggered() {
+ QMessageBox::aboutQt(this,tr("About Qt"));
+}
+
+void MainWindow::on_RegNodeTree_clicked(QModelIndex index) {
+ QStringList nodes;
+
+ //Built node path
+ nodes.clear();
+ nodes.append(this->p_reg_node_tree_model->
+ data(index,Qt::DisplayRole).toString());
+ while(this->p_reg_node_tree_model->parent(index)!=QModelIndex()) {
+ // Prepend all parent nodes
+ index=this->p_reg_node_tree_model->parent(index);
+ nodes.prepend(this->p_reg_node_tree_model->
+ data(index,Qt::DisplayRole).toString());
+ }
+
+ // Get hive_node handle for current node
+ hive_node_h hive_node=hivex_root(this->hhive);
+ QString cur_node;
+ for(QStringList::iterator it=nodes.begin();it!=nodes.end();++it) {
+ cur_node=*it;
+ hive_node=hivex_node_get_child(this->hhive,
+ hive_node,
+ cur_node.toAscii().constData());
+ }
+
+ // Create table model and attach it to the table view
+ if(this->p_reg_key_table_model!=NULL) delete this->p_reg_key_table_model;
+ this->p_reg_key_table_model=new RegistryKeyTableModel(this->hhive,
+ hive_node,
+ this->ui->RegKeyTable);
+ this->ui->RegKeyTable->setModel(this->p_reg_key_table_model);
+
+ // Resize table rows / columns to fit data
+ this->ui->RegKeyTable->resizeColumnsToContents();
+ this->ui->RegKeyTable->horizontalHeader()->stretchLastSection();
+}
+
+void MainWindow::UpdateWindowTitle(QString filename) {
+ if(filename=="") {
+ this->setWindowTitle(QString().sprintf("%s v%s",APP_TITLE,APP_VERSION));
+ } else {
+ this->setWindowTitle(QString().sprintf("%s v%s - %s",
+ APP_TITLE,
+ APP_VERSION,
+ filename.toLocal8Bit().constData()));
+ }
+}
+
+void MainWindow::on_actionAbout_fred_triggered() {
+ DlgAbout dlg_about(this);
+ dlg_about.exec();
+}
+
+void MainWindow::on_RegNodeTree_activated(QModelIndex index) {
+ // Also update when pressing ENTER
+ this->on_RegNodeTree_clicked(index);
+}
+
+void MainWindow::on_RegKeyTable_doubleClicked(QModelIndex index) {
+ QModelIndex key_index;
+ QModelIndex node_index;
+ QStringList nodes;
+
+ QString key_name;
+ QString key_type;
+ QByteArray key_value;
+
+ if(!index.isValid()) return;
+
+ // Get key name, type and value
+ key_index=this->p_reg_key_table_model->index(index.row(),0);
+ key_name=this->p_reg_key_table_model->data(key_index,Qt::DisplayRole)
+ .toString();
+ key_index=this->p_reg_key_table_model->index(index.row(),1);
+ key_type=this->p_reg_key_table_model->data(key_index,Qt::DisplayRole)
+ .toString();
+ key_index=this->p_reg_key_table_model->index(index.row(),2);
+ key_value=this->p_reg_key_table_model->data(key_index,
+ RegistryKeyTableModel::
+ AdditionalRoles_GetRawData)
+ .toByteArray();
+
+ // Get current node
+ node_index=this->ui->RegNodeTree->currentIndex();
+
+ //Built node path
+ nodes.clear();
+ nodes.append(this->p_reg_node_tree_model->
+ data(node_index,Qt::DisplayRole).toString());
+ while(this->p_reg_node_tree_model->parent(node_index)!=QModelIndex()) {
+ // Prepend all parent nodes
+ node_index=this->p_reg_node_tree_model->parent(node_index);
+ nodes.prepend(this->p_reg_node_tree_model->
+ data(node_index,Qt::DisplayRole).toString());
+ }
+
+ DlgKeyDetails dlg_key_details(this);
+ dlg_key_details.SetValues(nodes,key_name,key_type,key_value);
+ dlg_key_details.exec();
+}
diff --git a/tags/fred-0.1.0alpha1/mainwindow.h b/tags/fred-0.1.0alpha1/mainwindow.h
new file mode 100644
index 0000000..f2d5e27
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/mainwindow.h
@@ -0,0 +1,63 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+
+#include "registrynodetreemodel.h"
+#include "registrykeytablemodel.h"
+
+#include <hivex.h>
+
+namespace Ui {
+ class MainWindow;
+}
+
+class MainWindow : public QMainWindow {
+ Q_OBJECT
+
+ public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+
+ private slots:
+ void on_action_Quit_triggered();
+ void on_action_Open_hive_triggered();
+ void on_action_Close_hive_triggered();
+ void on_actionAbout_Qt_triggered();
+ void on_RegNodeTree_clicked(QModelIndex index);
+ void on_actionAbout_fred_triggered();
+ void on_RegNodeTree_activated(QModelIndex index);
+ void on_RegKeyTable_doubleClicked(QModelIndex index);
+
+private:
+ Ui::MainWindow *ui;
+ QString last_open_location;
+ hive_h *hhive;
+ bool is_hive_open;
+ RegistryNodeTreeModel *p_reg_node_tree_model;
+ RegistryKeyTableModel *p_reg_key_table_model;
+
+ void UpdateWindowTitle(QString filename="");
+};
+
+#endif // MAINWINDOW_H
diff --git a/tags/fred-0.1.0alpha1/mainwindow.ui b/tags/fred-0.1.0alpha1/mainwindow.ui
new file mode 100644
index 0000000..314fef6
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/mainwindow.ui
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>494</width>
+ <height>317</height>
+ </rect>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="baseSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="fred.qrc">
+ <normaloff>:/icons/resources/fred.png</normaloff>:/icons/resources/fred.png</iconset>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>3</number>
+ </property>
+ <property name="margin">
+ <number>3</number>
+ </property>
+ <item>
+ <widget class="QSplitter" name="splitter">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QTreeView" name="RegNodeTree">
+ <property name="baseSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="headerHidden">
+ <bool>true</bool>
+ </property>
+ <attribute name="headerVisible">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ <widget class="QTableView" name="RegKeyTable">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>100</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>400</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="horizontalScrollBarPolicy">
+ <enum>Qt::ScrollBarAsNeeded</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="textElideMode">
+ <enum>Qt::ElideNone</enum>
+ </property>
+ <property name="horizontalScrollMode">
+ <enum>QAbstractItemView::ScrollPerPixel</enum>
+ </property>
+ <attribute name="horizontalHeaderVisible">
+ <bool>true</bool>
+ </attribute>
+ <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="horizontalHeaderStretchLastSection">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>494</width>
+ <height>25</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menu_File">
+ <property name="title">
+ <string>&amp;File</string>
+ </property>
+ <addaction name="action_Open_hive"/>
+ <addaction name="action_Close_hive"/>
+ <addaction name="separator"/>
+ <addaction name="action_Quit"/>
+ </widget>
+ <widget class="QMenu" name="menu">
+ <property name="title">
+ <string>&amp;Help</string>
+ </property>
+ <addaction name="actionAbout_Qt"/>
+ <addaction name="actionAbout_fred"/>
+ </widget>
+ <addaction name="menu_File"/>
+ <addaction name="menu"/>
+ </widget>
+ <widget class="QStatusBar" name="StatusBar"/>
+ <action name="action_Open_hive">
+ <property name="text">
+ <string>&amp;Open hive</string>
+ </property>
+ </action>
+ <action name="action_Close_hive">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Close hive</string>
+ </property>
+ </action>
+ <action name="action_Quit">
+ <property name="text">
+ <string>&amp;Quit</string>
+ </property>
+ </action>
+ <action name="actionAbout_Qt">
+ <property name="text">
+ <string>About Qt</string>
+ </property>
+ </action>
+ <action name="actionAbout_fred">
+ <property name="text">
+ <string>About fred</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+ <include location="fred.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/tags/fred-0.1.0alpha1/qhexedit/qhexedit.cpp b/tags/fred-0.1.0alpha1/qhexedit/qhexedit.cpp
new file mode 100644
index 0000000..7ad0216
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/qhexedit/qhexedit.cpp
@@ -0,0 +1,137 @@
+/*******************************************************************************
+* qhexedit Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Simple hex editor widget for Qt. *
+* *
+* Derived from code by Simon Winfried under a compatible license: *
+* Copyright (c) 2010 by Simon Winfried *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include <QtGui>
+
+#include "qhexedit.h"
+
+
+QHexEdit::QHexEdit(QWidget *parent) : QScrollArea(parent)
+{
+ qHexEdit_p = new QHexEditPrivate(this);
+ setWidget(qHexEdit_p);
+ setWidgetResizable(true);
+
+ connect(qHexEdit_p, SIGNAL(currentAddressChanged(int)), this, SIGNAL(currentAddressChanged(int)));
+ connect(qHexEdit_p, SIGNAL(currentSizeChanged(int)), this, SIGNAL(currentSizeChanged(int)));
+ connect(qHexEdit_p, SIGNAL(dataChanged()), this, SIGNAL(dataChanged()));
+ connect(qHexEdit_p, SIGNAL(overwriteModeChanged(bool)), this, SIGNAL(overwriteModeChanged(bool)));
+}
+
+void QHexEdit::insert(int i, const QByteArray & ba)
+{
+ qHexEdit_p->insert(i, ba);
+}
+
+void QHexEdit::insert(int i, char ch)
+{
+ qHexEdit_p->insert(i, ch);
+}
+
+void QHexEdit::remove(int pos, int len)
+{
+ qHexEdit_p->remove(pos, len);
+}
+
+void QHexEdit::setAddressArea(bool addressArea)
+{
+ qHexEdit_p->setAddressArea(addressArea);
+}
+
+void QHexEdit::setAddressWidth(int addressWidth)
+{
+ qHexEdit_p->setAddressWidth(addressWidth);
+}
+
+void QHexEdit::setAsciiArea(bool asciiArea)
+{
+ qHexEdit_p->setAsciiArea(asciiArea);
+}
+
+void QHexEdit::setHighlighting(bool mode)
+{
+ qHexEdit_p->setHighlighting(mode);
+}
+
+void QHexEdit::setAddressOffset(int offset)
+{
+ qHexEdit_p->setAddressOffset(offset);
+}
+
+int QHexEdit::addressOffset()
+{
+ return addressOffset();
+}
+
+void QHexEdit::setData(const QByteArray &data)
+{
+ qHexEdit_p->setData(data);
+}
+
+QByteArray QHexEdit::data()
+{
+ return qHexEdit_p->data();
+}
+
+void QHexEdit::setAddressAreaColor(const QColor &color)
+{
+ qHexEdit_p->setAddressAreaColor(color);
+}
+
+QColor QHexEdit::addressAreaColor()
+{
+ return qHexEdit_p->addressAreaColor();
+}
+
+void QHexEdit::setHighlightingColor(const QColor &color)
+{
+ qHexEdit_p->setHighlightingColor(color);
+}
+
+QColor QHexEdit::highlightingColor()
+{
+ return qHexEdit_p->highlightingColor();
+}
+
+void QHexEdit::setOverwriteMode(bool overwriteMode)
+{
+ qHexEdit_p->setOverwriteMode(overwriteMode);
+}
+
+bool QHexEdit::overwriteMode()
+{
+ return qHexEdit_p->overwriteMode();
+}
+
+void QHexEdit::setReadOnly(bool read_only) {
+ qHexEdit_p->setReadOnly(read_only);
+}
+
+bool QHexEdit::readOnly() {
+ return qHexEdit_p->readOnly();
+}
+
+void QHexEdit::setFont(const QFont &font)
+{
+ qHexEdit_p->setFont(font);
+}
+
diff --git a/tags/fred-0.1.0alpha1/qhexedit/qhexedit.h b/tags/fred-0.1.0alpha1/qhexedit/qhexedit.h
new file mode 100644
index 0000000..eb6e6b1
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/qhexedit/qhexedit.h
@@ -0,0 +1,177 @@
+/*******************************************************************************
+* qhexedit Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Simple hex editor widget for Qt. *
+* *
+* Derived from code by Simon Winfried under a compatible license: *
+* Copyright (c) 2010 by Simon Winfried *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef QHEXEDIT_H
+#define QHEXEDIT_H
+
+#include <QtGui>
+#include "qhexedit_p.h"
+
+/** \mainpage
+QHexEdit is a binary editor widget for Qt.
+
+\version Version 0.4.6
+\image html hexedit.png
+*/
+
+
+/*! QHexEdit is a hex editor widget written in C++ for the Qt (Qt4) framework.
+It is a simple editor for binary data, just like QPlainTextEdit is for text data.
+There are sip configuration files included, so it is easy to create bindings
+for PyQt and you can use this widget also in python.
+
+QHexEdit takes the data of a QByteArray (setData()) and shows it. You can use the
+mouse or the keyboard to navigate inside the widget. If you hit the keys (0..9, a..f)
+you will change the data. Changed data is highlighted and can be accessed via data().
+
+Normaly QHexEdit works in the overwrite Mode. You can set overwriteMode(false) and
+insert data. In this case the size of data() increases. It is also possible to delete
+bytes under the cursor, here the size of data decreases.
+
+There are some limitations: The size of data has in general to be below 10 megabytes,
+otherwise the scroll sliders ard not shown and you can't scroll any more. Copy and
+paste functionality is perhaps a subject of a later release.
+*/
+ class QHexEdit : public QScrollArea
+{
+ Q_OBJECT
+ /*! Property data holds the content of QHexEdit. Call setData() to set the
+ content of QHexEdit, data() returns the actual content.
+ */
+ Q_PROPERTY(QByteArray data READ data WRITE setData)
+
+ /*! Property addressOffset is added to the Numbers of the Address Area.
+ A offset in the address area (left side) is sometimes usefull, whe you show
+ only a segment of a complete memory picture. With setAddressOffset() you set
+ this property - with addressOffset() you get the actual value.
+ */
+ Q_PROPERTY(int addressOffset READ addressOffset WRITE setAddressOffset)
+
+ /*! Property address area color sets (setAddressAreaColor()) the backgorund
+ color of address areas. You can also read the color (addressaAreaColor()).
+ */
+ Q_PROPERTY(QColor addressAreaColor READ addressAreaColor WRITE setAddressAreaColor)
+
+ /*! Property highlighting color sets (setHighlightingColor()) the backgorund
+ color of highlighted text areas. You can also read the color
+ (highlightingColor()).
+ */
+ Q_PROPERTY(QColor highlightingColor READ highlightingColor WRITE setHighlightingColor)
+
+ /*! Porperty overwrite mode sets (setOverwriteMode()) or gets (overwriteMode()) the mode
+ in which the editor works. In overwritem mode the user will overwrite existing data.
+ */
+ Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode)
+
+ /*! Porperty read only sets (setReadOnly()) or gets (readOnly()) the
+ current editable mode.
+ */
+ Q_PROPERTY(bool readOnly READ readOnly WRITE setReadOnly)
+
+public:
+ /*! Creates an instance of QHexEdit.
+ \param parent Parent widget of QHexEdit.
+ */
+ QHexEdit(QWidget *parent = 0);
+
+ /*! Inserts a byte array.
+ \param i Index position, where to insert
+ \param ba byte array, which is to insert
+ */
+ void insert(int i, const QByteArray & ba);
+
+ /*! Inserts a char.
+ \param i Index position, where to insert
+ \param ch Char, which is to insert
+ */
+ void insert(int i, char ch);
+
+ /*! Removes len bytes from the content.
+ \param pos Index position, where to remove
+ \param len Amount of bytes to remove
+ */
+ void remove(int pos, int len=1);
+
+ /*! Set the font of the widget. Please use fixed width fonts like Mono or Courier.*/
+ void setFont(const QFont &);
+
+ /*! \cond docNever */
+ void setAddressOffset(int offset);
+ int addressOffset();
+ void setData(QByteArray const &data);
+ QByteArray data();
+ void setAddressAreaColor(QColor const &color);
+ QColor addressAreaColor();
+ void setHighlightingColor(QColor const &color);
+ QColor highlightingColor();
+ void setOverwriteMode(bool);
+ bool overwriteMode();
+ void setReadOnly(bool);
+ bool readOnly();
+ /*! \endcond docNever */
+
+public slots:
+
+ /*! Set the minimum width of the address area.
+ \param addressWidth Width in characters.
+ */
+ void setAddressWidth(int addressWidth);
+
+ /*! Switch the address area on or off.
+ \param addressArea true (show it), false (hide it).
+ */
+ void setAddressArea(bool addressArea);
+
+ /*! Switch the ascii area on or off.
+ \param asciiArea true (show it), false (hide it).
+ */
+ void setAsciiArea(bool asciiArea);
+
+ /*! Switch the highlighting feature on or of.
+ \param mode true (show it), false (hide it).
+ */
+ void setHighlighting(bool mode);
+
+signals:
+
+ /*! Contains the address, where the cursor is located. */
+ void currentAddressChanged(int address);
+
+ /*! Contains the size of the data to edit. */
+ void currentSizeChanged(int size);
+
+ /*! The signal is emited every time, the data is changed. */
+ void dataChanged();
+
+ /*! The signal is emited every time, the overwrite mode is changed. */
+ void overwriteModeChanged(bool state);
+
+private:
+ /*! \cond docNever */
+ QHexEditPrivate *qHexEdit_p;
+ QHBoxLayout *layout;
+ QScrollArea *scrollArea;
+ /*! \endcond docNever */
+};
+
+#endif
+
diff --git a/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.cpp b/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.cpp
new file mode 100644
index 0000000..23a6f80
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.cpp
@@ -0,0 +1,454 @@
+/*******************************************************************************
+* qhexedit Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Simple hex editor widget for Qt. *
+* *
+* Derived from code by Simon Winfried under a compatible license: *
+* Copyright (c) 2010 by Simon Winfried *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include <QtGui>
+
+#include "qhexedit_p.h"
+
+const int HEXCHARS_IN_LINE = 47;
+const int GAP_ADR_HEX = 10;
+const int GAP_HEX_ASCII = 16;
+const int BYTES_PER_LINE = 16;
+
+QHexEditPrivate::QHexEditPrivate(QScrollArea *parent) : QWidget(parent)
+{
+ _scrollArea = parent;
+ setAddressWidth(4);
+ setAddressOffset(0);
+ setAddressArea(true);
+ setAsciiArea(true);
+ setHighlighting(true);
+ setOverwriteMode(true);
+ setAddressAreaColor(QColor(Qt::lightGray).lighter(110));
+ setHighlightingColor(QColor(Qt::yellow).lighter(160));
+ this->setReadOnly(true);
+
+ setFont(QFont("Mono", 10));
+ connect(&_cursorTimer, SIGNAL(timeout()), this, SLOT(updateCursor()));
+
+ _cursorTimer.setInterval(500);
+ _cursorTimer.start();
+
+ setFocusPolicy(Qt::StrongFocus);
+ _size = -1;
+}
+
+void QHexEditPrivate::setAddressOffset(int offset)
+{
+ _addressOffset = offset;
+ adjust();
+}
+
+int QHexEditPrivate::addressOffset()
+{
+ return _addressOffset;
+}
+
+void QHexEditPrivate::setData(const QByteArray &data)
+{
+ _data = data;
+ _originalData = data;
+ adjust();
+ setCursorPos(0);
+ setFocus();
+}
+
+QByteArray QHexEditPrivate::data()
+{
+ return _data;
+}
+
+void QHexEditPrivate::setAddressAreaColor(const QColor &color)
+{
+ _addressAreaColor = color;
+ update();
+}
+
+QColor QHexEditPrivate::addressAreaColor()
+{
+ return _addressAreaColor;
+}
+
+void QHexEditPrivate::setHighlightingColor(const QColor &color)
+{
+ _highlightingColor = color;
+ update();
+}
+
+QColor QHexEditPrivate::highlightingColor()
+{
+ return _highlightingColor;
+}
+
+void QHexEditPrivate::setOverwriteMode(bool overwriteMode)
+{
+ if (overwriteMode != _overwriteMode)
+ {
+ emit overwriteModeChanged(overwriteMode);
+ _overwriteMode = overwriteMode;
+ adjust();
+ }
+}
+
+bool QHexEditPrivate::overwriteMode()
+{
+ return _overwriteMode;
+}
+
+void QHexEditPrivate::setReadOnly(bool read_only) {
+ this->_readOnly=read_only;
+}
+
+bool QHexEditPrivate::readOnly() {
+ return this->_readOnly;
+}
+
+void QHexEditPrivate::insert(int i, const QByteArray & ba)
+{
+ _data.insert(i, ba);
+ _originalData.insert(i, ba);
+}
+
+void QHexEditPrivate::insert(int i, char ch)
+{
+ _data.insert(i, ch);
+ _originalData.insert(i, ch);
+}
+
+void QHexEditPrivate::remove(int index, int len)
+{
+ _data.remove(index, len);
+ _originalData.remove(index, len);
+}
+
+void QHexEditPrivate::setAddressArea(bool addressArea)
+{
+ _addressArea = addressArea;
+ adjust();
+ setCursorPos(_cursorPosition);
+}
+
+void QHexEditPrivate::setAddressWidth(int addressWidth)
+{
+ if ((addressWidth >= 0) and (addressWidth<=6))
+ {
+ _addressNumbers = addressWidth;
+ adjust();
+ setCursorPos(_cursorPosition);
+ }
+}
+
+void QHexEditPrivate::setAsciiArea(bool asciiArea)
+{
+ _asciiArea = asciiArea;
+ adjust();
+}
+
+void QHexEditPrivate::setFont(const QFont &font)
+{
+ QWidget::setFont(font);
+ adjust();
+}
+
+void QHexEditPrivate::setHighlighting(bool mode)
+{
+ _highlighting = mode;
+ update();
+}
+
+void QHexEditPrivate::keyPressEvent(QKeyEvent *event)
+{
+ bool down = false;
+ int charX = (_cursorX - _xPosHex) / _charWidth;
+ int posX = (charX / 3) * 2 + (charX % 3);
+ int posBa = (_cursorY / _charHeight) * BYTES_PER_LINE + posX / 2;
+
+ int key = int(event->text()[0].toAscii());
+ if (!this->_readOnly &&
+ ((key>='0' && key<='9') || (key>='a' && key <= 'f')))
+ {
+ // insert char
+ if (_overwriteMode == false)
+ if ((charX % 3) == 0)
+ {
+ insert(posBa, char(0));
+ adjust();
+ }
+ if (_data.size() > 0)
+ {
+ QByteArray hexValue = _data.mid(posBa, 1).toHex();
+ if ((charX % 3) == 0)
+ hexValue[0] = key;
+ else
+ hexValue[1] = key;
+ _data.replace(posBa, 1, QByteArray().fromHex(hexValue));
+ emit dataChanged();
+
+ setCursorPos(_cursorPosition + 1);
+ down = true;
+ }
+ }
+
+ // delete char
+ if (!this->_readOnly && event->matches(QKeySequence::Delete)) {
+ remove(posBa);
+ }
+ if (!this->_readOnly && event->key() == Qt::Key_Backspace) {
+ remove(posBa - 1);
+ setCursorPos(_cursorPosition - 2);
+ }
+
+ // handle other function keys
+ if(!this->_readOnly && event->key() == Qt::Key_Insert) {
+ setOverwriteMode(!_overwriteMode);
+ setCursorPos(_cursorPosition);
+ }
+
+ if (event->matches(QKeySequence::MoveToNextChar))
+ {
+ setCursorPos(_cursorPosition + 1);
+ down = true;
+ }
+ if (event->matches(QKeySequence::MoveToPreviousChar))
+ setCursorPos(_cursorPosition - 1);
+ if (event->matches(QKeySequence::MoveToStartOfLine))
+ setCursorPos(_cursorPosition - (_cursorPosition % (2 * BYTES_PER_LINE)));
+ if (event->matches(QKeySequence::MoveToEndOfLine))
+ setCursorPos(_cursorPosition | (2 * BYTES_PER_LINE -1));
+ if (event->matches(QKeySequence::MoveToPreviousLine))
+ setCursorPos(_cursorPosition - (2 * BYTES_PER_LINE));
+ if (event->matches(QKeySequence::MoveToPreviousPage))
+ setCursorPos(_cursorPosition - (((_scrollArea->viewport()->height() / _charHeight) - 1) * 2 * BYTES_PER_LINE));
+ if (event->matches(QKeySequence::MoveToStartOfDocument))
+ setCursorPos(0);
+ if (event->matches(QKeySequence::MoveToNextLine))
+ {
+ setCursorPos(_cursorPosition + (2 * BYTES_PER_LINE));
+ down = true;
+ }
+ if (event->matches(QKeySequence::MoveToEndOfDocument))
+ {
+ setCursorPos(_data.size() * 2);
+ down = true;
+ }
+ if (event->matches(QKeySequence::MoveToNextPage))
+ {
+ setCursorPos(_cursorPosition + (((_scrollArea->viewport()->height() / _charHeight) - 1) * 2 * BYTES_PER_LINE));
+ down = true;
+ }
+
+ // when we move downwards, we have to go a little further
+ if (down)
+ _scrollArea->ensureVisible(_cursorX, _cursorY, 3, 3 + _charHeight);
+ else
+ _scrollArea->ensureVisible(_cursorX, _cursorY, 3, 3);
+ update();
+}
+
+void QHexEditPrivate::mousePressEvent(QMouseEvent * event)
+{
+ setCursorPos(event->pos());
+}
+
+void QHexEditPrivate::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+
+ // draw some patterns if needed
+ painter.fillRect(event->rect(), this->palette().color(QPalette::Base));
+ if (_addressArea)
+ painter.fillRect(QRect(_xPosAdr, event->rect().top(), _xPosHex - GAP_ADR_HEX + 2, height()), _addressAreaColor);
+ if (_asciiArea)
+ {
+ int linePos = _xPosAscii - (GAP_HEX_ASCII / 2);
+ painter.setPen(Qt::gray);
+ painter.drawLine(linePos, event->rect().top(), linePos, height());
+ }
+
+ painter.setPen(this->palette().color(QPalette::WindowText));
+
+ // calc position
+ int firstLineIdx = ((event->rect().top()/ _charHeight) - _charHeight) * BYTES_PER_LINE;
+ if (firstLineIdx < 0)
+ firstLineIdx = 0;
+ int lastLineIdx = ((event->rect().bottom() / _charHeight) + _charHeight) * BYTES_PER_LINE;
+ if (lastLineIdx > _data.size())
+ lastLineIdx = _data.size();
+ int yPosStart = ((firstLineIdx) / BYTES_PER_LINE) * _charHeight + _charHeight;
+
+ // paint address area
+ if (_addressArea)
+ {
+ for (int lineIdx = firstLineIdx, yPos = yPosStart; lineIdx < lastLineIdx; lineIdx += BYTES_PER_LINE, yPos +=_charHeight)
+ {
+ QString address = QString("%1")
+ .arg(lineIdx + _addressOffset, _realAddressNumbers, 16, QChar('0'));
+ painter.drawText(_xPosAdr, yPos, address);
+ }
+ }
+
+ // paint hex area
+ QByteArray hexBa(_data.mid(firstLineIdx, lastLineIdx - firstLineIdx + 1).toHex());
+ QBrush highLighted = QBrush(_highlightingColor);
+ painter.setBackground(highLighted);
+ painter.setBackgroundMode(Qt::TransparentMode);
+ for (int lineIdx = firstLineIdx, yPos = yPosStart; lineIdx < lastLineIdx; lineIdx += BYTES_PER_LINE, yPos +=_charHeight)
+ {
+ QByteArray hex;
+ int xPos = _xPosHex;
+ for (int colIdx = 0; ((lineIdx + colIdx) < _data.size() and (colIdx < BYTES_PER_LINE)); colIdx++)
+ {
+ // hilight diff bytes
+ if (_highlighting)
+ {
+ int posBa = lineIdx + colIdx;
+ if (posBa >= _originalData.size())
+ painter.setBackgroundMode(Qt::TransparentMode);
+ else
+ if (_data[posBa] == _originalData[posBa])
+ painter.setBackgroundMode(Qt::TransparentMode);
+ else
+ painter.setBackgroundMode(Qt::OpaqueMode);
+ }
+
+ // render hex value
+ if (colIdx == 0)
+ {
+ hex = hexBa.mid((lineIdx - firstLineIdx) * 2, 2);
+ painter.drawText(xPos, yPos, hex);
+ xPos += 2 * _charWidth;
+ } else {
+ hex = hexBa.mid((lineIdx + colIdx - firstLineIdx) * 2, 2).prepend(" ");
+ painter.drawText(xPos, yPos, hex);
+ xPos += 3 * _charWidth;
+ }
+ }
+ }
+ painter.setBackgroundMode(Qt::TransparentMode);
+
+ // paint ascii area
+ if (_asciiArea)
+ {
+ for (int lineIdx = firstLineIdx, yPos = yPosStart; lineIdx < lastLineIdx; lineIdx += BYTES_PER_LINE, yPos +=_charHeight)
+ {
+ QByteArray ascii = _data.mid(lineIdx, BYTES_PER_LINE);
+ for (int idx=0; idx < ascii.size(); idx++)
+ if (((char)ascii[idx] < 0x20) or ((char)ascii[idx] > 0x7e))
+ ascii[idx] = '.';
+ painter.drawText(_xPosAscii, yPos, ascii);
+ }
+ }
+
+ // paint cursor
+ if (_blink)
+ {
+ if (_overwriteMode)
+ painter.fillRect(_cursorX, _cursorY + _charHeight - 2, _charWidth, 2, this->palette().color(QPalette::WindowText));
+ else
+ painter.fillRect(_cursorX, _cursorY, 2, _charHeight, this->palette().color(QPalette::WindowText));
+ }
+
+ if (_size != _data.size())
+ {
+ _size = _data.size();
+ emit currentSizeChanged(_size);
+ }
+}
+
+void QHexEditPrivate::setCursorPos(int position)
+{
+ // delete cursor
+ _blink = false;
+ update();
+
+ // cursor in range?
+ if (_overwriteMode)
+ {
+ if (position > (_data.size() * 2 - 1))
+ position = _data.size() * 2 - 1;
+ } else {
+ if (position > (_data.size() * 2))
+ position = _data.size() * 2;
+ }
+
+ if (position < 0)
+ position = 0;
+
+ // calc position
+ _cursorPosition = position;
+ _cursorY = (position / (2 * BYTES_PER_LINE)) * _charHeight + 4;
+ int x = (position % (2 * BYTES_PER_LINE));
+ _cursorX = (((x / 2) * 3) + (x % 2)) * _charWidth + _xPosHex;
+
+ // immiadately draw cursor
+ _blink = true;
+ update();
+ emit currentAddressChanged(_cursorPosition/2);
+}
+
+void QHexEditPrivate::setCursorPos(QPoint pos)
+{
+ // find char under cursor
+ if ((pos.x() >= _xPosHex) and (pos.x() < (_xPosHex + HEXCHARS_IN_LINE * _charWidth)))
+ {
+ int x = (pos.x() - _xPosHex) / _charWidth;
+ if ((x % 3) == 0)
+ x = (x / 3) * 2;
+ else
+ x = ((x / 3) * 2) + 1;
+ int y = (pos.y() / _charHeight) * 2 * BYTES_PER_LINE;
+ setCursorPos(x + y);
+ }
+}
+
+void QHexEditPrivate::updateCursor()
+{
+ if (_blink)
+ _blink = false;
+ else
+ _blink = true;
+ update(_cursorX, _cursorY, _charWidth, _charHeight);
+}
+
+void QHexEditPrivate::adjust()
+{
+ _charWidth = fontMetrics().width(QLatin1Char('9'));
+ _charHeight = fontMetrics().height();
+
+ // is addressNumbers wide enought?
+ QString test = QString("%1")
+ .arg(_data.size() + _addressOffset, _addressNumbers, 16, QChar('0'));
+ _realAddressNumbers = test.size();
+
+ _xPosAdr = 0;
+ if (_addressArea)
+ _xPosHex = _realAddressNumbers *_charWidth + GAP_ADR_HEX;
+ else
+ _xPosHex = 0;
+ _xPosAscii = _xPosHex + HEXCHARS_IN_LINE * _charWidth + GAP_HEX_ASCII;
+
+ // tell QAbstractScollbar, how big we are
+ setMinimumHeight(((_data.size()/16 + 1) * _charHeight) + 3);
+ setMinimumWidth(_xPosAscii + (BYTES_PER_LINE * _charWidth));
+
+ update();
+}
diff --git a/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.h b/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.h
new file mode 100644
index 0000000..70ec39e
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/qhexedit/qhexedit_p.h
@@ -0,0 +1,109 @@
+/*******************************************************************************
+* qhexedit Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Simple hex editor widget for Qt. *
+* *
+* Derived from code by Simon Winfried under a compatible license: *
+* Copyright (c) 2010 by Simon Winfried *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef QHEXEDIT_P_H
+#define QHEXEDIT_P_H
+
+/** \cond docNever */
+
+
+#include <QtGui>
+
+class QHexEditPrivate : public QWidget
+{
+Q_OBJECT
+
+public:
+ QHexEditPrivate(QScrollArea *parent);
+
+ void setAddressOffset(int offset);
+ int addressOffset();
+
+ void setData(QByteArray const &data);
+ QByteArray data();
+
+ void setAddressAreaColor(QColor const &color);
+ QColor addressAreaColor();
+
+ void setHighlightingColor(QColor const &color);
+ QColor highlightingColor();
+
+ void setOverwriteMode(bool overwriteMode);
+ bool overwriteMode();
+ void setReadOnly(bool read_only);
+ bool readOnly();
+
+ void insert(int i, const QByteArray & ba);
+ void insert(int i, char ch);
+ void remove(int index, int len=1);
+
+ void setAddressArea(bool addressArea);
+ void setAddressWidth(int addressWidth);
+ void setAsciiArea(bool asciiArea);
+ void setHighlighting(bool mode);
+ virtual void setFont(const QFont &font);
+
+signals:
+ void currentAddressChanged(int address);
+ void currentSizeChanged(int size);
+ void dataChanged();
+ void overwriteModeChanged(bool state);
+
+protected:
+ void keyPressEvent(QKeyEvent * event);
+ void mousePressEvent(QMouseEvent * event);
+ void paintEvent(QPaintEvent *event);
+ void setCursorPos(QPoint pos);
+ void setCursorPos(int position);
+
+private slots:
+ void updateCursor();
+
+private:
+ void adjust();
+
+ QColor _addressAreaColor;
+ QByteArray _data;
+ QByteArray _originalData;
+ QColor _highlightingColor;
+ QScrollArea *_scrollArea;
+ QTimer _cursorTimer;
+
+ bool _blink;
+ bool _addressArea;
+ bool _asciiArea;
+ bool _highlighting;
+ bool _overwriteMode;
+ bool _readOnly;
+
+ int _addressNumbers, _realAddressNumbers;
+ int _addressOffset;
+ int _charWidth, _charHeight;
+ int _cursorX, _cursorY, _cursorPosition;
+ int _xPosAdr, _xPosHex, _xPosAscii;
+ int _size;
+};
+
+/** \endcond docNever */
+
+#endif
+
diff --git a/tags/fred-0.1.0alpha1/qrc_fred.cpp b/tags/fred-0.1.0alpha1/qrc_fred.cpp
new file mode 100644
index 0000000..775239d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/qrc_fred.cpp
@@ -0,0 +1,720 @@
+/****************************************************************************
+** Resource object code
+**
+** Created: Sun Aug 7 19:55:33 2011
+** by: The Resource Compiler for Qt version 4.7.2
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include <QtCore/qglobal.h>
+
+static const unsigned char qt_resource_data[] = {
+ // /storage/local/projects/fred/trunk/resources/fred.png
+ 0x0,0x0,0x28,0x15,
+ 0x89,
+ 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
+ 0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x8,0x6,0x0,0x0,0x0,0xc3,0x3e,0x61,0xcb,
+ 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x20,
+ 0x0,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9d,0x77,0x7c,0x54,0x55,0xda,0xc7,0xbf,
+ 0xf7,0x4e,0xcf,0x24,0x99,0x74,0x52,0x9,0x9,0x81,0x10,0x40,0x8a,0x14,0x41,0xfa,
+ 0x2e,0x88,0xbd,0x23,0xca,0x5a,0x0,0x57,0x50,0x77,0x45,0x76,0x55,0x58,0x5,0x59,
+ 0x5c,0xdb,0xca,0xea,0xda,0x5e,0xdd,0x5d,0xd7,0xae,0xe8,0x5a,0xd6,0xb2,0x8a,0x5,
+ 0xd7,0x8a,0x60,0x1,0x41,0xe9,0x48,0x12,0x42,0x42,0x2,0xe9,0x65,0x92,0xe9,0xf7,
+ 0x9e,0xf7,0x8f,0x99,0x4c,0x66,0x92,0x49,0x32,0x1,0x12,0xca,0xe6,0x99,0xcf,0xf9,
+ 0xdc,0xb9,0xe7,0xde,0xb9,0x73,0xcf,0x79,0x7e,0xe7,0x69,0xa7,0x41,0x2f,0xf5,0x52,
+ 0x2f,0xfd,0xef,0x92,0xf4,0x3f,0x52,0xce,0x81,0xc0,0xc5,0xc0,0x14,0x20,0x12,0x88,
+ 0xf0,0x25,0x80,0x3d,0xc0,0xe,0x60,0x27,0xb0,0x1d,0xd8,0x6,0xa8,0xbd,0xd0,0x38,
+ 0xf1,0x49,0x3,0x2c,0xf2,0x31,0x57,0x74,0x21,0x95,0x3,0xcf,0x0,0x17,0x4,0x80,
+ 0xa4,0x57,0x2,0x9c,0x60,0x34,0xe,0xf8,0x3b,0x30,0x1c,0x40,0xa3,0xd1,0x90,0x9a,
+ 0x9a,0x4a,0x66,0x66,0xa6,0x3f,0xe9,0xf5,0x6,0x4a,0x4a,0x8a,0x29,0x2a,0x2a,0x62,
+ 0xff,0xfe,0xfd,0x94,0x94,0x94,0xe0,0x74,0x3a,0x5b,0x3f,0xc7,0xe,0x3c,0xd,0xfc,
+ 0x11,0xa8,0xed,0x5,0xc0,0xf1,0x4f,0x71,0xc0,0xfd,0xc0,0x75,0x80,0x34,0x72,0xe4,
+ 0x48,0xe6,0xcd,0x9b,0xcf,0x69,0xa7,0x9d,0x86,0x56,0xab,0xed,0xf0,0x87,0x42,0x8,
+ 0xf6,0xee,0xdd,0xcb,0x4b,0x2f,0xbd,0xc8,0x47,0x1f,0x7d,0x84,0xaa,0x6,0x69,0x81,
+ 0x6a,0xe0,0x4e,0xe0,0x29,0x40,0xe9,0x5,0xc0,0xf1,0x49,0x16,0xe0,0x7b,0x60,0xe0,
+ 0xf8,0xf1,0xe3,0xf9,0xd5,0xaf,0xae,0x64,0xd8,0xb0,0x61,0x87,0xf5,0xa0,0x83,0x7,
+ 0xf,0xf2,0xea,0xab,0xaf,0xb0,0x66,0xcd,0x1a,0xdc,0x6e,0x77,0xe0,0xa5,0x6d,0x3e,
+ 0xd5,0xb0,0xaf,0x17,0x0,0xc7,0x17,0xc9,0xc0,0xfb,0x5a,0xad,0xf6,0xac,0xe5,0xcb,
+ 0xef,0x64,0xec,0xd8,0xb1,0x47,0xe5,0xa1,0x87,0xe,0x1d,0x62,0xe9,0xd2,0x25,0x54,
+ 0x56,0x56,0x6,0x66,0x17,0x0,0x13,0x81,0x43,0xbd,0x0,0x38,0x7e,0xe8,0xcf,0x1a,
+ 0x8d,0x66,0xe9,0x2d,0xb7,0xde,0xca,0x98,0xd1,0x63,0x8e,0xea,0x83,0xf,0x1d,0x3a,
+ 0xc4,0x8a,0x15,0x77,0x52,0x5b,0x5b,0xdb,0x5a,0x12,0x4c,0x39,0x19,0xec,0x82,0x93,
+ 0x1,0x0,0x23,0x65,0x59,0xde,0xbc,0xf0,0xfa,0xeb,0x19,0x3b,0x66,0x6c,0xb7,0xfc,
+ 0x41,0x59,0x59,0x19,0xf,0x3c,0xf0,0x67,0x1a,0x1a,0x1a,0x2,0xb3,0xbf,0x1,0x66,
+ 0x0,0x4d,0x27,0xba,0xab,0x74,0xa2,0xd3,0xdf,0x27,0x4f,0x99,0x32,0x68,0xea,0x94,
+ 0xa9,0xb8,0xdd,0xee,0x6e,0x49,0x46,0xa3,0x91,0xf8,0x84,0x4,0x36,0x6f,0xde,0x1c,
+ 0xf8,0xbf,0x19,0x40,0x1f,0xe0,0x3f,0x27,0x72,0xe5,0x69,0x4f,0x70,0xe6,0xe7,0x49,
+ 0x92,0x74,0xc1,0xd8,0xb1,0x63,0x69,0x6c,0x6c,0xec,0xd6,0x3f,0xca,0xce,0xca,0x26,
+ 0x36,0x36,0xb6,0xb5,0x2a,0xb8,0x16,0x78,0x19,0xf8,0xa2,0x17,0x0,0xc7,0x86,0x2e,
+ 0x89,0x8e,0x8e,0xc6,0x68,0x34,0xd2,0x64,0xeb,0x7e,0x49,0x9c,0xd1,0xb7,0x6f,0x6b,
+ 0x0,0xe0,0x73,0xd,0x87,0x1,0x8e,0x5e,0x0,0xf4,0x3c,0x5d,0x60,0xb1,0x58,0xba,
+ 0xbd,0xf5,0x37,0x53,0x64,0x64,0x64,0xa8,0xec,0x1,0xc0,0x12,0xe0,0x4f,0xbd,0x0,
+ 0xe8,0x59,0x4a,0x0,0x46,0xd9,0xed,0x76,0x9a,0x1a,0x7b,0xc6,0xe,0xeb,0x0,0x68,
+ 0x73,0x7b,0x1,0xd0,0xf3,0x94,0xd,0x48,0x75,0x75,0x75,0x58,0xad,0x56,0x24,0xa9,
+ 0xfb,0x1d,0x9a,0xaa,0xe0,0x78,0x40,0x20,0x65,0x1,0xa3,0x80,0x1f,0x7a,0x1,0xd0,
+ 0x73,0x94,0x9,0xe0,0x76,0xbb,0xd9,0x9b,0xbf,0x97,0xb4,0xd4,0xb4,0x6e,0xfd,0x33,
+ 0x87,0xc3,0xc1,0xc1,0x83,0x7,0x3b,0xba,0xe5,0x9c,0x5e,0x0,0xf4,0x2c,0xf5,0x6d,
+ 0xfe,0xb2,0x67,0xf7,0x6e,0x22,0xcd,0x91,0x68,0x34,0xdd,0xe7,0xd5,0xee,0xde,0xbd,
+ 0xb,0x21,0x44,0x47,0xb7,0xc,0xec,0x55,0x1,0xc7,0x8,0x0,0x56,0xab,0x95,0x2d,
+ 0x5b,0x36,0x93,0x3b,0x68,0x10,0xb2,0x2c,0x1f,0xf5,0x3f,0x2a,0x29,0x2e,0xa6,0xb4,
+ 0xb4,0xb4,0xb3,0xdb,0xb2,0x7a,0x1,0x70,0x8c,0x0,0x0,0x50,0x5f,0x5f,0xcf,0xae,
+ 0x9d,0x3b,0xe9,0x9b,0x99,0x79,0x54,0xed,0x81,0xca,0x8a,0xa,0xca,0xcb,0xcb,0xc3,
+ 0xb9,0xb5,0x17,0x0,0x3d,0x4c,0x96,0xd6,0x19,0x36,0x9b,0x8d,0x21,0x83,0x7,0x53,
+ 0x53,0x5b,0x4b,0x41,0x41,0x41,0xd8,0xf,0x3a,0xfb,0xec,0xb3,0x99,0x33,0x67,0xe,
+ 0x91,0x91,0x91,0x44,0x45,0x45,0xe1,0x72,0xb9,0x78,0xf3,0xcd,0x37,0x79,0xf4,0x91,
+ 0x47,0x5a,0x77,0x4,0x75,0x44,0xc9,0x80,0xf1,0x44,0x8d,0x7,0x9c,0x88,0xf4,0x31,
+ 0x1,0x23,0x79,0xa6,0x4e,0x9d,0x2a,0xf2,0xf3,0xf3,0x45,0x33,0x15,0x15,0x15,0x89,
+ 0x49,0x93,0x26,0x89,0xa4,0xa4,0xa4,0xe,0xd3,0x93,0x4f,0x3e,0x29,0xda,0xa3,0x75,
+ 0xeb,0xd6,0x89,0xb8,0xb8,0xb8,0xae,0x8c,0x26,0x1a,0xd4,0xcb,0x96,0x9e,0xa3,0x35,
+ 0xcd,0x15,0x9f,0x9a,0x9a,0x2a,0x2a,0x2a,0x2a,0xda,0x30,0xf0,0x87,0x1f,0x7e,0x10,
+ 0x3a,0x9d,0x4e,0xe8,0xf5,0x7a,0x61,0x30,0x18,0x84,0xc9,0x64,0x12,0x11,0x11,0x11,
+ 0xc2,0x6c,0x36,0xb,0xb3,0xd9,0x2c,0xae,0xbe,0xfa,0x6a,0xd1,0x19,0xbd,0xfe,0xfa,
+ 0xeb,0x5d,0x1,0xc0,0x59,0xbd,0x6c,0xe9,0x39,0x7a,0xa7,0xb9,0xe2,0x1f,0x7a,0xe8,
+ 0xa1,0x76,0x19,0xb8,0x78,0xf1,0xe2,0x76,0x19,0xf6,0xde,0x7b,0xef,0xb5,0xb9,0x5f,
+ 0x51,0x94,0x36,0x79,0x93,0x27,0x4f,0xe,0x17,0x0,0xb,0x7b,0xd9,0xd2,0x73,0xf4,
+ 0x66,0x73,0xc5,0x6f,0xdd,0xba,0xd5,0xcf,0xac,0xda,0xda,0x5a,0x61,0xb7,0xdb,0xfd,
+ 0xe7,0x1b,0x37,0x6e,0x6c,0x97,0x61,0xe5,0xe5,0xe5,0xfe,0xfb,0x76,0xef,0xde,0x2d,
+ 0x16,0x2e,0x5c,0x28,0x4e,0x3f,0xfd,0x74,0x71,0xc3,0xd,0x37,0x88,0x43,0x87,0xe,
+ 0xf9,0xaf,0xad,0x5d,0xbb,0x36,0x5c,0x0,0xdc,0xd1,0xcb,0x96,0x9e,0xa3,0x7f,0x1,
+ 0x22,0x2a,0x2a,0x4a,0xa8,0xaa,0x2a,0x6a,0x6b,0x6b,0xc5,0x8d,0x37,0xde,0x28,0x56,
+ 0xae,0xbc,0x4b,0x4c,0x9f,0x3e,0x5d,0x14,0x14,0x14,0xf8,0x5b,0x74,0x28,0x3d,0x9e,
+ 0x95,0x95,0x15,0xd4,0xca,0x57,0xac,0x58,0x21,0xde,0x7d,0xf7,0x3f,0xe2,0xdd,0x77,
+ 0xff,0x23,0x46,0x8f,0x1e,0x2d,0x16,0x2e,0x5c,0xe8,0xbf,0xe6,0x70,0x38,0x44,0x44,
+ 0x44,0x44,0x38,0x0,0x78,0xf0,0x44,0xab,0x44,0xf9,0x44,0x47,0x81,0xc5,0x62,0x41,
+ 0x92,0x24,0x1e,0x7f,0xfc,0x71,0xe6,0xcf,0xbf,0x96,0xa9,0x53,0xa7,0x32,0x79,0xf2,
+ 0x14,0x6e,0xba,0xe9,0x26,0x6f,0x1,0x65,0x99,0xd4,0xd4,0xd4,0x36,0xbf,0x1b,0x3d,
+ 0x7a,0x74,0x8b,0x9f,0x5f,0x52,0x42,0xe1,0xbe,0x7d,0x6c,0xdf,0xbe,0x9d,0xed,0xdb,
+ 0xb7,0x93,0xd9,0xaf,0x1f,0x2f,0xbc,0xf0,0x2,0xd5,0xd5,0xd5,0x0,0x18,0xc,0x86,
+ 0x70,0xc7,0x17,0xc6,0xf6,0xba,0x81,0x3d,0x4c,0x3a,0x9d,0xe,0x80,0xa8,0xa8,0x28,
+ 0xb6,0x6f,0xdf,0x8e,0xd5,0x6a,0x45,0xa3,0xd1,0xf0,0xd1,0x47,0x1f,0x51,0x5c,0x5c,
+ 0x4c,0xdf,0xbe,0x7d,0x31,0x18,0xc,0x6d,0x7e,0x57,0x53,0x53,0xe3,0xff,0xde,0xd4,
+ 0xd4,0x44,0x7e,0x7e,0x3e,0x1e,0xb7,0x7,0x80,0xc2,0xc2,0x42,0x1c,0xe,0x7,0xd5,
+ 0xd5,0xd5,0xc4,0xc7,0xc7,0x3,0xed,0xf6,0x4,0xb6,0xa6,0xb8,0x5e,0x0,0xf4,0x30,
+ 0x95,0x96,0x96,0xa2,0xaa,0x2a,0x11,0x11,0x11,0x6c,0xf8,0x66,0x3,0x8,0x28,0x2f,
+ 0x2f,0x47,0x55,0x55,0x5e,0x7c,0xf1,0x45,0x96,0x2f,0x5f,0xee,0x6f,0xc9,0x81,0xf4,
+ 0xc3,0xf,0xc1,0x61,0xfb,0xed,0xdb,0xb6,0x51,0x5f,0x5f,0x8f,0x10,0x82,0xfd,0x45,
+ 0x45,0x0,0x44,0x47,0x47,0xfb,0xaf,0x1b,0x8d,0xc6,0x5e,0x0,0x1c,0x8f,0xe4,0x72,
+ 0xb9,0x28,0x29,0x29,0x61,0xe8,0xd0,0xa1,0x2c,0x5d,0xba,0x94,0xf8,0x84,0x4,0xca,
+ 0x7c,0x61,0xdb,0xe2,0xe2,0x62,0x7e,0xf8,0xec,0x1d,0xce,0xcd,0xb2,0x31,0x7c,0x52,
+ 0x5f,0xfa,0x58,0xf4,0xd4,0x35,0x79,0x28,0xaa,0x71,0xb1,0x6e,0x6f,0x13,0x7b,0xb6,
+ 0xff,0x48,0xee,0xd0,0x11,0x48,0x92,0x44,0x63,0x63,0x23,0xbb,0x76,0xee,0xc,0x7a,
+ 0x76,0x20,0x0,0xc2,0x8c,0x6,0xf6,0xaa,0x80,0x63,0x41,0x3f,0xff,0xfc,0x33,0x33,
+ 0x66,0xcc,0xe0,0x8c,0x33,0xce,0xe0,0xf5,0xd7,0x5f,0x7,0x20,0x23,0xd6,0xc0,0x39,
+ 0x96,0x9f,0xf0,0x7c,0xf1,0x35,0x77,0x5e,0xe2,0x22,0x32,0x21,0xa,0x63,0x84,0x84,
+ 0x5b,0x31,0xe3,0x68,0xd2,0x70,0x51,0xb1,0x42,0xf9,0xea,0x2b,0x51,0xb2,0x47,0x92,
+ 0x30,0xfe,0x5a,0x8c,0x6,0x3,0x8e,0x80,0x99,0x41,0xc9,0xc9,0xc9,0x44,0x44,0xb4,
+ 0xcc,0xc,0x2b,0x2c,0x2c,0x3c,0x29,0x1,0x70,0xc2,0x7b,0x1,0x80,0xb8,0xec,0xb2,
+ 0xcb,0x84,0x10,0x42,0x94,0x96,0x96,0x8a,0x98,0x98,0x18,0x31,0x29,0x27,0x4a,0x7c,
+ 0xf2,0xbb,0x1,0xa2,0xea,0x6f,0x51,0xa2,0xf6,0xb5,0x71,0x42,0x2d,0x78,0x5a,0xa8,
+ 0x55,0x1b,0x85,0x5a,0xed,0x4d,0x95,0x1b,0xfe,0x2e,0x7e,0x7e,0x6e,0x8e,0x50,0xbe,
+ 0xb9,0x58,0xd4,0xbf,0x9a,0x28,0x76,0x3d,0x3c,0x5c,0x7c,0xb9,0x6c,0xb4,0xb8,0x6c,
+ 0x74,0xbc,0x30,0xe9,0x65,0x1,0x4,0x45,0x8,0x37,0x6d,0xda,0x14,0xae,0x1b,0x68,
+ 0x3d,0xd1,0x2a,0x51,0x3a,0xc1,0x1,0x30,0xbb,0xd9,0xd2,0xdf,0xb3,0x67,0xf,0x39,
+ 0x39,0x39,0xec,0x7a,0xe7,0x7e,0x1a,0x7f,0x5c,0xcd,0xf0,0xa1,0x95,0xd0,0xff,0x26,
+ 0xe4,0xe8,0xfe,0x68,0xc,0xc6,0x56,0x25,0x15,0x38,0xea,0x6b,0x30,0xc6,0xc4,0x83,
+ 0xa7,0xe,0xa9,0xe4,0x1f,0xb8,0x2a,0x7f,0xa0,0xa4,0x2c,0x85,0xe2,0xfd,0x66,0xe4,
+ 0xc8,0x64,0x6,0x4c,0x9d,0x47,0x6c,0xde,0x14,0x4c,0x9,0x99,0x5c,0x75,0xd5,0x55,
+ 0xbc,0xfc,0xf2,0xcb,0x5d,0x91,0xaa,0x27,0xcc,0xf4,0xb1,0x93,0x42,0x5,0xa8,0xaa,
+ 0xca,0xfc,0xf9,0xf3,0xf9,0xe7,0x4d,0x13,0x61,0xff,0x7b,0x8c,0x1a,0x59,0x8a,0x34,
+ 0xf0,0xf7,0xa0,0x8b,0x6,0x51,0x9,0xce,0x56,0x70,0x97,0xc0,0x68,0x2,0x9c,0x36,
+ 0x90,0x40,0xa4,0xcd,0x41,0x4f,0x1d,0xfd,0x23,0xf7,0xd0,0x3f,0x17,0x6c,0xb6,0x7d,
+ 0xd4,0x15,0xec,0xa1,0x70,0x53,0x3a,0xd5,0xb5,0xa,0xf5,0xdb,0xa,0xbb,0xf2,0x3a,
+ 0x16,0xa0,0xa6,0x17,0x0,0x3d,0x4c,0xe3,0x4c,0x7b,0xb1,0xfd,0xbc,0x8f,0x91,0x43,
+ 0xf,0x21,0x32,0xe6,0x80,0xda,0x0,0xae,0x86,0x36,0x8c,0x6f,0x73,0x94,0x0,0x4f,
+ 0x35,0xb8,0xb,0xbd,0xb5,0x21,0x41,0x84,0xc5,0x49,0x44,0xcc,0x41,0x52,0xa5,0x83,
+ 0x78,0x3c,0x1a,0xfe,0x20,0x67,0x50,0x67,0x53,0x59,0xb7,0xb7,0x21,0x9c,0x57,0x89,
+ 0xe9,0x5,0x40,0xf,0xd3,0xe4,0x1,0xd1,0x9c,0x37,0xca,0xc4,0x88,0x53,0x8a,0xc0,
+ 0x10,0xf,0xc2,0x9,0xce,0x92,0x60,0x26,0xb7,0xf7,0xdd,0x55,0x8c,0xd4,0xb8,0x9,
+ 0x64,0x77,0x4b,0x9e,0x4,0x4d,0x56,0x23,0x46,0xb3,0xb,0xad,0x51,0x61,0xf0,0xa8,
+ 0x4a,0x2e,0xda,0x13,0x1b,0x2e,0x0,0x72,0x81,0xc2,0x5e,0x0,0xf4,0x10,0x69,0x64,
+ 0x89,0x65,0xe7,0x26,0x73,0xda,0x98,0x42,0x24,0xad,0x0,0xb5,0xa,0xc9,0xba,0x1,
+ 0x61,0x4c,0x5,0x49,0x13,0xc4,0xd4,0xa0,0x84,0x82,0xe4,0x2c,0x2,0x4f,0xb9,0x77,
+ 0x7e,0x94,0x2f,0xdf,0xd1,0xa4,0x27,0xff,0x47,0x6f,0xe4,0x30,0xf7,0xb4,0x3,0x68,
+ 0xb4,0x2a,0xe,0xbb,0x9e,0x1d,0x7,0x9c,0xe1,0xbe,0xd2,0x69,0xc0,0x87,0xbd,0x0,
+ 0xe8,0x21,0x52,0x54,0x81,0x24,0x9,0xf4,0x11,0x9e,0x0,0x91,0x5e,0x82,0xd4,0x54,
+ 0xa,0xda,0x48,0xd0,0x98,0x10,0x1a,0x1d,0x48,0x12,0x48,0x20,0x9,0x17,0xa8,0x4d,
+ 0x20,0x6c,0x20,0xa9,0x7e,0xe6,0xb,0x21,0x51,0xba,0x37,0x81,0x8a,0x62,0xb,0xd9,
+ 0x23,0xe,0x11,0x93,0xd2,0xe8,0xd,0x94,0x4b,0x50,0x56,0x66,0x64,0xf7,0xc1,0xb0,
+ 0xe7,0x1e,0x8c,0x3d,0x91,0xea,0xef,0xa4,0x50,0x1,0x6e,0x8f,0xa0,0xb4,0x24,0x81,
+ 0xb8,0x44,0x2b,0xa6,0x28,0xa7,0x17,0x4,0xb2,0xa,0x52,0x3,0x88,0x6,0x24,0xa5,
+ 0x55,0xeb,0x97,0x83,0xcf,0xad,0x35,0x26,0xa,0x36,0xa7,0x12,0xd3,0xa7,0x91,0x11,
+ 0x33,0xb,0x91,0x75,0x6a,0x90,0xba,0xa8,0x2b,0x8f,0x60,0x6f,0x45,0x55,0xb8,0xaf,
+ 0x33,0xd,0x88,0xc7,0xbb,0xa8,0x44,0x2f,0x0,0x7a,0xe2,0xdd,0xdf,0xdf,0xda,0x40,
+ 0x46,0xba,0x89,0xf2,0xb2,0x58,0x52,0xb3,0xaa,0x49,0xee,0x57,0xd3,0xbe,0xe8,0xf,
+ 0x60,0x6c,0x6d,0x45,0x24,0x65,0x7b,0x12,0x50,0x55,0x89,0x1,0xe3,0x4a,0x31,0xc7,
+ 0x3b,0xda,0xdc,0x57,0xb0,0x39,0x95,0x6f,0x7e,0xb6,0x53,0x61,0x75,0x87,0xfb,0x5e,
+ 0x46,0x60,0x1,0xde,0x95,0x4a,0x7a,0x1,0xd0,0x8d,0xd4,0xa7,0xf9,0xcb,0xb,0x1b,
+ 0xaa,0x98,0x7a,0xca,0x10,0x86,0xf,0xb6,0x51,0x5f,0x63,0xa6,0xf2,0xa0,0x85,0x94,
+ 0xec,0x1a,0xa2,0x13,0x9a,0x90,0xb5,0x2,0x81,0x84,0xaa,0x48,0xd8,0x9b,0xf4,0x38,
+ 0x1a,0xd,0xd8,0xad,0x6,0xea,0xca,0xcd,0x98,0x63,0x1c,0x64,0x8e,0x2c,0x27,0x32,
+ 0xc1,0xde,0x6,0x1c,0x55,0xc5,0xd1,0x14,0x6d,0xcd,0xc6,0x1d,0x39,0x8c,0x2d,0x58,
+ 0x81,0xb7,0xbb,0xf2,0x6e,0x37,0x2,0x7f,0x1,0x3c,0xbd,0x0,0xe8,0x3e,0xf2,0xf7,
+ 0xf1,0xda,0x5c,0x2a,0x9f,0x3a,0x4f,0x27,0x43,0xf5,0x10,0xab,0xff,0x92,0xec,0xbc,
+ 0x3,0x94,0x17,0xc5,0x72,0x70,0x5f,0x1c,0x8a,0x47,0x46,0x92,0x5,0x1a,0xad,0x8a,
+ 0x31,0xca,0x45,0x44,0xb4,0x93,0x98,0xd4,0x46,0xd2,0x87,0x57,0xa2,0x33,0x79,0xda,
+ 0xb4,0xf8,0xca,0x42,0xb,0x45,0x3f,0x66,0xe1,0x89,0xce,0x43,0x1d,0x31,0x1b,0xa2,
+ 0x92,0xb9,0x7e,0x90,0x9d,0x2f,0xbf,0x5a,0x47,0x55,0x55,0xd8,0x6a,0x20,0x1d,0xb8,
+ 0x1d,0xb8,0xbb,0x17,0x0,0xdd,0x47,0x29,0x81,0x27,0x49,0x7d,0x92,0x11,0x23,0xce,
+ 0xa4,0x69,0xab,0x8b,0xaa,0x8a,0xaf,0xc8,0x1e,0xb3,0xbf,0x73,0x35,0x10,0x90,0x54,
+ 0x55,0x22,0x7f,0xfd,0x40,0x6c,0xae,0x91,0x88,0xd3,0xe7,0x22,0xf4,0x31,0x7e,0x8f,
+ 0x31,0xc2,0x64,0xe2,0xb7,0x37,0x2d,0x62,0xe5,0x1f,0x57,0x74,0xe5,0xfd,0x56,0xe0,
+ 0x1d,0xb8,0xfa,0xfd,0xf1,0x5c,0x89,0x27,0xea,0x80,0x90,0x18,0xc0,0x14,0x54,0x10,
+ 0x8d,0xcc,0xe0,0xc1,0x83,0x19,0x7c,0xf5,0xdf,0xb1,0xda,0x27,0x50,0xb8,0xad,0x3f,
+ 0x42,0x92,0xbc,0x56,0xbe,0xc6,0x7,0xf5,0x76,0x92,0xc3,0xae,0x67,0xeb,0x9a,0xe1,
+ 0x68,0x53,0x7e,0xcd,0xa0,0xb9,0xcf,0x73,0xca,0xd8,0xa9,0xa4,0xa4,0xa6,0xf8,0x3c,
+ 0x7,0x6f,0x9a,0x71,0xc6,0x4c,0x46,0x8e,0x3c,0xb5,0xab,0x8d,0x6b,0x35,0x60,0xee,
+ 0x5,0xc0,0xd1,0xa7,0x49,0xad,0x33,0x6,0xd,0x1c,0x88,0x5e,0xaf,0x43,0x20,0x91,
+ 0x75,0xc5,0x53,0xa8,0x31,0x73,0xf9,0xe9,0xbf,0xc3,0x71,0xd8,0xf5,0x5e,0x56,0x68,
+ 0xda,0x26,0x21,0x49,0x14,0xff,0x98,0xc1,0xf6,0x8f,0xc6,0xd1,0x67,0xc6,0x83,0x24,
+ 0x4f,0xf9,0xd,0xaa,0xaa,0x22,0x84,0x4a,0x9f,0xc4,0x44,0x92,0x92,0x12,0x91,0x24,
+ 0xc9,0x9f,0x16,0x5c,0x7f,0x7d,0x57,0xdf,0x33,0x7,0x78,0xa4,0x57,0x5,0x1c,0x7d,
+ 0xba,0xa0,0x75,0x86,0xcb,0xed,0xc6,0xa3,0xb4,0xac,0xed,0x97,0x34,0xed,0x77,0x98,
+ 0x32,0x4e,0x63,0xd7,0x17,0xab,0xd0,0x19,0xab,0x49,0xce,0xf1,0xba,0x77,0x8a,0x4b,
+ 0x83,0xa3,0xc9,0x48,0xdd,0xc1,0x14,0x1c,0x35,0x5a,0x62,0x46,0x5c,0x40,0xce,0x82,
+ 0x1b,0x90,0xb5,0x86,0xa0,0xdf,0x3,0x24,0x25,0x26,0xe1,0x76,0xbb,0xa9,0xaf,0xf7,
+ 0x46,0x0,0x47,0x8c,0x18,0xc9,0xc0,0xdc,0x5c,0x7e,0xde,0xb3,0xa7,0x2b,0xef,0xfa,
+ 0x6b,0xbc,0x43,0xd8,0xdf,0x39,0x1e,0x2b,0xf2,0x44,0xec,0xd,0x94,0x81,0xb2,0x40,
+ 0x2f,0x0,0xe0,0xb5,0xd7,0x5f,0xe7,0x8c,0x33,0x66,0x86,0xfc,0x81,0xbd,0x7c,0x2f,
+ 0xd,0xdb,0xdf,0x46,0xe0,0x41,0xa3,0x8f,0x41,0x13,0x99,0x42,0x44,0xda,0x70,0x8c,
+ 0x89,0x59,0x5e,0x11,0xdf,0x11,0x9,0x41,0xc9,0x81,0x3,0xd8,0xec,0x76,0x0,0xd6,
+ 0xac,0x79,0x9f,0xbb,0xef,0xba,0xab,0xab,0xef,0x5c,0x85,0x77,0x15,0x91,0x83,0xbd,
+ 0x0,0x38,0x72,0xfa,0x43,0x6b,0x1f,0xfb,0xbc,0xf3,0xce,0xe7,0xf9,0xe7,0x5f,0xe8,
+ 0xb6,0x3f,0xb4,0xd9,0xed,0x94,0x95,0x95,0x79,0x25,0x8d,0xcb,0xc5,0xf9,0xe7,0x9d,
+ 0x13,0x6a,0xa9,0x98,0xce,0xe8,0x63,0xbc,0x13,0x47,0xc4,0xf1,0x54,0x99,0x27,0xda,
+ 0x2a,0x61,0x23,0x81,0x57,0x2,0xdf,0x3b,0x21,0x21,0x81,0x37,0xff,0xfd,0x6f,0xc,
+ 0x7a,0x3,0x42,0x88,0x6e,0x49,0x5a,0xad,0x96,0xc6,0xa6,0x26,0xff,0xf7,0xa6,0xa6,
+ 0x26,0xb6,0x6c,0xd9,0x7c,0x38,0xf6,0x40,0xd,0xf0,0x5d,0xaf,0x11,0x78,0x78,0x64,
+ 0xf2,0x59,0xd5,0xba,0xc0,0xcc,0x3f,0xdd,0x7d,0xf,0xe6,0xc8,0x28,0x3c,0xaa,0xda,
+ 0xad,0x49,0xab,0xd7,0xfb,0x3d,0x82,0x4b,0x2e,0x9d,0xd5,0xe9,0xda,0xc3,0xed,0xd0,
+ 0x3,0xc0,0x90,0x5e,0x0,0x1c,0x1e,0xad,0x2,0xf2,0x82,0x5c,0x81,0xc9,0x93,0xb9,
+ 0xe0,0xc2,0xb,0x51,0x55,0xa5,0xdb,0x93,0x56,0x23,0xfb,0xbd,0xc2,0xa4,0xa4,0x44,
+ 0x7e,0xf1,0xcb,0x5f,0x1e,0x4e,0x19,0x8c,0x3e,0x10,0x1b,0x7a,0x55,0x40,0xd7,0xe8,
+ 0x4c,0xe0,0xb1,0xd6,0x99,0x2f,0xbe,0xf8,0x12,0x71,0xb1,0xb1,0x20,0x44,0xb7,0x27,
+ 0x9b,0xc3,0x81,0xa2,0x28,0x7e,0x97,0x30,0x36,0x36,0x96,0xf7,0xde,0x3b,0xac,0x35,
+ 0x22,0x93,0x7d,0xd2,0x6c,0x6d,0xaf,0x1b,0x18,0x1e,0x25,0x0,0xcf,0xb6,0xce,0x4c,
+ 0x4b,0x4f,0x27,0x2d,0x2d,0x1d,0x55,0xe9,0x19,0x9b,0x4a,0xf5,0x28,0x48,0x1,0x36,
+ 0xf3,0x88,0x11,0x23,0x31,0x9b,0xcd,0x34,0x35,0x1d,0xd6,0xa,0x65,0xbf,0xc7,0x3b,
+ 0x66,0xe0,0xd3,0x5e,0x15,0xd0,0x39,0x3d,0x4d,0xab,0xb0,0x2f,0xc0,0x9c,0x2b,0xe6,
+ 0xe0,0x70,0x3a,0x51,0x84,0xda,0xed,0xc9,0xed,0x71,0x7,0xb5,0x7e,0x49,0x92,0xd0,
+ 0x6a,0xb5,0x8c,0x39,0xfc,0xb5,0x89,0x25,0xe0,0x5,0x8e,0x83,0x61,0xe4,0xc7,0x3b,
+ 0x0,0x16,0x86,0xa,0xfa,0x44,0x44,0x98,0xb9,0xf4,0xb2,0xd9,0xb8,0xdd,0x6e,0x3c,
+ 0x1e,0xf,0xaa,0xaa,0x76,0x6b,0xb2,0x39,0xec,0x41,0x61,0xe1,0xe6,0x34,0x6e,0xfc,
+ 0xf8,0x23,0x29,0x5b,0x1a,0xf0,0x8f,0x5e,0x15,0xd0,0x3e,0xe5,0x2,0x7f,0xd,0x75,
+ 0x61,0xda,0xb4,0x69,0xe8,0xf5,0x5e,0x67,0xc0,0xd6,0xd4,0x48,0x44,0x84,0xb9,0xdb,
+ 0xd6,0x9,0x74,0xb9,0x5d,0x78,0xdc,0xee,0x90,0xf1,0xa2,0xf1,0xa7,0x9f,0x7e,0xa4,
+ 0x8f,0x9f,0x5,0x5c,0xe3,0x93,0x6,0xbd,0x12,0x20,0x80,0xf4,0x3e,0x7f,0x3f,0xe4,
+ 0xa6,0x4d,0x33,0xce,0x38,0xc3,0x2f,0x8a,0x5,0x60,0x77,0xd8,0x51,0x85,0xca,0xd1,
+ 0xfe,0xb8,0x3c,0x6e,0x5c,0x2e,0x57,0x90,0xe8,0xf,0x4c,0x99,0x99,0x99,0xa4,0x84,
+ 0x98,0x79,0xdc,0x45,0x7a,0x9c,0x63,0xb8,0xc0,0xd4,0xf1,0xa,0x80,0xbb,0x81,0x90,
+ 0x5d,0x6f,0x3a,0x9d,0x8e,0xd3,0x4f,0x9f,0x80,0x14,0xf0,0x11,0xaa,0xc0,0xe9,0x70,
+ 0xa2,0x2a,0x2,0x71,0x94,0x92,0xc7,0xad,0xe0,0x76,0xba,0x82,0xfe,0x27,0xd4,0x27,
+ 0x27,0x27,0xe7,0x48,0xcb,0x1a,0x5,0x3c,0xdf,0xb,0x80,0x16,0xfa,0x5,0x70,0x5b,
+ 0xbb,0x7a,0x61,0xd0,0x20,0x8c,0x46,0x63,0x9b,0xd6,0x28,0x84,0xc0,0xe5,0x74,0xa2,
+ 0x78,0x3c,0xa8,0x42,0x1c,0x76,0x52,0x54,0xd5,0x6b,0x5b,0xb8,0xdd,0xed,0xb6,0xfc,
+ 0xc0,0x34,0x6c,0xd8,0xf0,0xa3,0x51,0xe6,0xc9,0xc0,0x65,0xbd,0x0,0xf0,0x4e,0xaf,
+ 0x7e,0x91,0xe,0xfa,0x28,0x86,0xf,0x1b,0x1e,0xca,0x1e,0xf3,0x27,0x45,0x55,0xf0,
+ 0xb8,0x5d,0xa8,0x8a,0x7,0x84,0x1a,0x76,0x12,0xaa,0x82,0xe2,0x71,0xa3,0x78,0xdc,
+ 0x8,0xa1,0x76,0xf8,0x1f,0x81,0x69,0xc1,0x82,0x5,0x9c,0x75,0xd6,0xd9,0x47,0xa3,
+ 0xec,0xf,0x1c,0x8b,0x0,0xd1,0xf1,0x6,0x80,0xa7,0x7c,0xd6,0x71,0xbb,0x34,0x7c,
+ 0xc4,0x88,0xb0,0x38,0xa3,0xa,0x81,0x47,0x51,0xfc,0x49,0x51,0x14,0x14,0x55,0xd,
+ 0x4a,0x41,0xd7,0x55,0xd5,0xdb,0x4b,0x13,0x2e,0xe7,0x7d,0x49,0xd6,0x68,0xb8,0xe7,
+ 0xbe,0xfb,0x38,0xf5,0xd4,0x53,0x8f,0xb4,0xec,0xfd,0x80,0xc5,0x3d,0x5d,0xe1,0xc7,
+ 0x53,0x6f,0xe0,0x35,0x9d,0xe9,0x42,0x93,0xc9,0xc4,0xda,0xff,0x7e,0x4a,0x6c,0xec,
+ 0xf1,0x37,0xb,0xbb,0xae,0xae,0x8e,0x39,0x97,0xcf,0xa6,0xb8,0xb8,0xd8,0x9f,0xd7,
+ 0xbf,0x7f,0x7f,0xca,0x2b,0x2a,0x68,0xb4,0x86,0x3d,0x69,0xb8,0x1,0xef,0xfe,0x3,
+ 0x15,0xff,0x6b,0x12,0x20,0x1d,0x78,0xb4,0xb3,0x9b,0xae,0xba,0xea,0x6a,0xe2,0x62,
+ 0xe3,0x3a,0x35,0xcc,0xba,0xfa,0x79,0xe7,0x9d,0x7f,0x1f,0xf1,0x33,0x62,0x63,0x62,
+ 0xb9,0xfd,0x8e,0x65,0x41,0xef,0x5b,0x58,0x58,0xc8,0xac,0x4b,0x67,0x31,0x65,0xea,
+ 0xd4,0x70,0xeb,0x21,0x9a,0x1e,0xde,0x77,0xe0,0x78,0x91,0x0,0x6b,0xf1,0xee,0xc0,
+ 0xd5,0xc6,0xe2,0x6f,0xde,0xb8,0x31,0x2a,0x2a,0x8a,0x4f,0xfe,0xfb,0x59,0xd0,0xaa,
+ 0x1d,0x1d,0x22,0x5b,0x96,0x31,0x1a,0xd,0xe8,0x74,0x3a,0x34,0xb2,0x8c,0x24,0x6b,
+ 0xd0,0x68,0x64,0x24,0x49,0x42,0x51,0x54,0x84,0xaa,0xa2,0xa8,0xa,0xcf,0x3e,0xf7,
+ 0x34,0xcb,0x6e,0x5f,0x86,0x24,0x49,0xec,0xdc,0xb5,0xe7,0x88,0xa,0x21,0x84,0xe0,
+ 0xfc,0xf3,0xce,0xa5,0xa0,0x20,0x3f,0x28,0xff,0xa6,0x45,0x37,0x53,0x53,0x53,0xc3,
+ 0xea,0x97,0x5f,0xa,0xe7,0x31,0xa,0x30,0x2,0xef,0x46,0xd6,0xff,0x13,0x12,0xe0,
+ 0x86,0x50,0xcc,0xcf,0xcd,0xcd,0xd,0xda,0xb5,0x73,0xde,0xfc,0xf9,0x58,0x2c,0xd1,
+ 0xed,0xaa,0x63,0x59,0x96,0xb0,0x58,0xa2,0x48,0x49,0xee,0x43,0x56,0xbf,0x4c,0x72,
+ 0xfa,0x67,0x93,0x91,0x9e,0x4e,0x72,0x9f,0x3e,0x24,0x26,0x26,0x92,0x10,0x1f,0x47,
+ 0x6c,0x4c,0xc,0x31,0x16,0xb,0xf1,0x71,0xb1,0x24,0x24,0xc4,0xb7,0x30,0xdf,0xc7,
+ 0xbc,0xc1,0x79,0xb9,0x24,0xc4,0xc7,0xa1,0xd7,0xeb,0xba,0x6a,0xa,0xf8,0xdf,0x61,
+ 0xde,0xfc,0xf9,0x6d,0x1d,0xfd,0xc7,0x1e,0x25,0x2f,0x2f,0x8f,0xd9,0xb3,0x2f,0xf,
+ 0xa7,0x3e,0x34,0x78,0x7b,0x3e,0xff,0x27,0x24,0x40,0x36,0xb0,0x95,0x56,0x23,0x67,
+ 0x93,0x93,0x93,0xc9,0xc8,0xc8,0x60,0xe3,0xc6,0x8d,0x0,0xc4,0xc6,0xc6,0xf2,0xe9,
+ 0x67,0x9f,0x7,0x2d,0xd9,0x12,0x68,0x17,0x44,0x45,0x46,0x11,0x19,0xd9,0xb5,0x68,
+ 0xe0,0x3,0x7f,0xf9,0x73,0xb,0xf3,0x7d,0x15,0x21,0x0,0x49,0x92,0x70,0xbb,0x3d,
+ 0x38,0x1c,0x4e,0xac,0x8d,0x56,0xac,0x56,0x2b,0x6f,0xbc,0xf9,0x9a,0xff,0x77,0x97,
+ 0x5e,0xd2,0xb1,0xb7,0xe6,0x72,0xb9,0xf8,0xc5,0xb4,0x69,0x54,0x55,0x55,0xb6,0x91,
+ 0x66,0xaf,0xbd,0xf6,0x3a,0x77,0xdf,0x7d,0x77,0xb8,0x83,0x49,0xf2,0x80,0xdd,0x27,
+ 0xb3,0x4,0x90,0x7d,0x46,0x5f,0x9b,0x61,0xd3,0x57,0xcc,0x99,0xe3,0x67,0x3e,0xc0,
+ 0x82,0x85,0xb,0x89,0x30,0x9b,0x83,0x9a,0x9b,0xc1,0x60,0x20,0x25,0x25,0x85,0x94,
+ 0xe4,0x64,0x22,0x23,0xcd,0x7e,0x11,0x1c,0x6e,0x2,0x90,0xee,0xbf,0x37,0x98,0xf9,
+ 0xf7,0xdf,0xeb,0x7f,0x8e,0xc1,0xa0,0x27,0x21,0x3e,0x9e,0x37,0xde,0x7c,0x8d,0x65,
+ 0xb7,0x2f,0x63,0x39,0xb0,0x1c,0x18,0x94,0x3b,0xb0,0x43,0x31,0xa0,0x37,0x18,0xb8,
+ 0xea,0xea,0xab,0xda,0x14,0xd6,0xed,0x76,0xb3,0x62,0xc5,0xa,0xfe,0xfa,0xc8,0x23,
+ 0x24,0x26,0x26,0x86,0x53,0x3f,0xb,0x4e,0x76,0x15,0xf0,0x6b,0x42,0xc,0xef,0xbe,
+ 0xfc,0xf2,0x2b,0xd8,0xb2,0x79,0x8b,0xff,0x3c,0x29,0x29,0x89,0x39,0x73,0xae,0xf4,
+ 0x1b,0x5b,0x1a,0x59,0x26,0x31,0x3e,0x81,0x94,0xe4,0x14,0xc,0x6,0xc3,0x61,0x7,
+ 0x7c,0xfc,0x22,0xb0,0x19,0x4,0x3e,0xe6,0x3,0xfe,0x7b,0x56,0x3d,0xf8,0x40,0x8b,
+ 0x94,0xb8,0xdd,0x67,0xe0,0xdd,0x77,0xf,0x83,0x6,0xe,0xe8,0xd0,0x20,0x9c,0x3d,
+ 0xfb,0x8a,0x90,0x1b,0x57,0x6c,0xdf,0xbe,0x8d,0x6f,0xd6,0xaf,0x67,0xee,0xdc,0x79,
+ 0xe1,0x7a,0x45,0xc6,0x93,0x15,0x0,0x12,0x70,0x4b,0xeb,0xcc,0xe4,0xe4,0x64,0xce,
+ 0x3e,0xfb,0x6c,0xbe,0xf8,0xe2,0x73,0x7f,0xde,0x8d,0xbf,0xf9,0xd,0x26,0x93,0x11,
+ 0x49,0x2,0xbd,0x4e,0x4b,0x72,0x9f,0x3e,0x44,0x44,0x44,0x78,0x5b,0xb2,0x7a,0xf8,
+ 0xe9,0x96,0xdf,0xdd,0xc6,0x3d,0x1,0x20,0x0,0xe0,0x8e,0xe5,0xd8,0xed,0x4e,0x84,
+ 0x2a,0x78,0xf0,0xa1,0x55,0x6d,0x55,0x44,0x0,0x8,0x72,0x7,0xe6,0xb4,0x2b,0x8,
+ 0xe2,0xe2,0x62,0x39,0xe5,0x94,0x53,0x42,0x16,0xfc,0xfd,0xf7,0xdf,0x67,0xfa,0x8c,
+ 0xe9,0xe1,0x6,0xc5,0x66,0x9d,0xac,0x0,0x38,0x97,0x10,0x7b,0xec,0xfc,0xfa,0xd7,
+ 0xd7,0xf1,0xcc,0x33,0x4f,0xfb,0xcf,0xd3,0xd2,0xd3,0x99,0x3d,0xfb,0x72,0x24,0x49,
+ 0xc2,0x68,0x34,0x92,0x98,0x94,0x84,0xac,0xd1,0x78,0x3b,0x7e,0x8e,0x42,0xfa,0xdd,
+ 0xe2,0x5b,0xfc,0x20,0xe0,0x8e,0xe5,0x34,0xd9,0xec,0x41,0xd7,0xee,0x6d,0x47,0x45,
+ 0x70,0xc7,0x72,0xf6,0xe6,0x17,0x74,0x18,0x22,0x9e,0x3c,0x65,0x4a,0xc8,0x82,0x7f,
+ 0xf7,0xdd,0xb7,0xc4,0xc4,0xc4,0x92,0x95,0x15,0x56,0xff,0xcf,0xf5,0x27,0x2b,0x0,
+ 0xda,0xb4,0xfe,0x98,0x98,0x58,0x72,0x7,0xd,0xe2,0xcb,0x2f,0xbf,0xf4,0xe7,0x2d,
+ 0x5a,0xb4,0x8,0x9d,0x4e,0x87,0x4e,0xa7,0xf3,0xe,0xfd,0xea,0xa2,0x9e,0xf,0x27,
+ 0x2d,0xbe,0xf9,0xf7,0x70,0xc7,0x72,0x1a,0x9b,0x6c,0x21,0xaf,0xdd,0xdb,0x5a,0x45,
+ 0xf8,0xee,0x8d,0x8a,0x8a,0xea,0x18,0x0,0x93,0x27,0x87,0xf6,0xf1,0x14,0x85,0xb5,
+ 0x6b,0x3f,0x66,0xfa,0xf4,0x19,0xe1,0xd4,0xd3,0xe9,0xc0,0x29,0x27,0x1b,0x0,0x4e,
+ 0xc5,0xbb,0xf5,0x7a,0x10,0x5d,0x7d,0xcd,0x35,0xac,0x5e,0xdd,0xb2,0x14,0x5b,0x46,
+ 0xdf,0xbe,0x5c,0x78,0xd1,0xc5,0x48,0xb2,0x4c,0x4c,0x4c,0x8c,0xb7,0x1d,0x76,0x65,
+ 0xeb,0x86,0x2e,0xa4,0xc6,0x46,0x5b,0xbb,0xd7,0x16,0x2f,0xf2,0x82,0x80,0x3b,0x96,
+ 0x7b,0x99,0xef,0xbb,0x37,0xd2,0x6c,0xc6,0x60,0x34,0xb6,0x6b,0xc,0xe,0x1e,0x32,
+ 0xb4,0x5d,0xaf,0xe4,0xc3,0xf,0x3e,0xe4,0x97,0x33,0x66,0x84,0x5b,0x5f,0xd7,0x9d,
+ 0x6c,0x6e,0xe0,0xcb,0xc0,0xaf,0x82,0x1c,0x5f,0x8d,0x86,0x4f,0x3f,0xfd,0x8c,0x33,
+ 0xcf,0x9c,0x89,0xc3,0xe1,0xdd,0x72,0xe7,0xe6,0x9b,0x17,0xb3,0xe8,0xe6,0x9b,0x89,
+ 0x8c,0x8c,0x24,0xc2,0x64,0xea,0xd2,0x1f,0x3c,0xfa,0xf8,0x91,0x4d,0xc7,0xbb,0xf9,
+ 0xa6,0xf0,0x42,0xf2,0xaa,0x2a,0xa8,0xaa,0x6e,0x7f,0xca,0xf8,0xa4,0x89,0x13,0xfc,
+ 0x13,0x4a,0x82,0xa4,0x5d,0x6c,0x2c,0x1b,0x37,0x6e,0x62,0xec,0x98,0xd1,0xe1,0x4c,
+ 0x30,0xd9,0xa,0xc,0xef,0x2e,0x66,0xf4,0xf4,0x88,0xa0,0x64,0x42,0x74,0x7b,0x4e,
+ 0x9a,0x3c,0x99,0xed,0x3b,0xb6,0xfb,0x99,0x2f,0x49,0x12,0x17,0x5d,0x7c,0xb1,0x37,
+ 0x9a,0x67,0x30,0x22,0xba,0x30,0xee,0xf3,0xb1,0xff,0x7b,0x84,0xe5,0xb7,0x2f,0x6b,
+ 0xa3,0xbb,0x45,0x2b,0x83,0x8e,0xfb,0xef,0x85,0x10,0xf7,0x71,0xc7,0x72,0x16,0xfd,
+ 0x36,0x3c,0x0,0x48,0x92,0x84,0xc9,0x64,0xf2,0xbf,0x77,0x6b,0xca,0xca,0xca,0xe,
+ 0x9,0x80,0xfa,0xba,0x3a,0xc0,0xbb,0x64,0xfd,0x27,0x9f,0x7c,0xd2,0xd9,0xdf,0xc,
+ 0xc6,0x3b,0x8a,0xd8,0x7e,0x32,0x0,0x60,0x26,0xad,0x26,0x76,0x0,0x5c,0x70,0xfe,
+ 0x5,0xac,0x5f,0xbf,0xde,0x7f,0x3e,0x6a,0xf4,0x68,0x32,0x33,0x33,0xfd,0x2b,0x74,
+ 0x8b,0x30,0x11,0xf0,0xf8,0x13,0x8f,0xb2,0xdc,0xc7,0xdc,0x36,0x4b,0x2,0xfa,0x74,
+ 0xb8,0xe4,0xd3,0xe3,0x81,0xcf,0x6c,0xed,0x6,0x3e,0xf6,0x7f,0x2d,0x12,0xe4,0xa6,
+ 0xdf,0xdc,0xdc,0xe1,0x7f,0x9a,0x8c,0x26,0x9c,0xce,0xd0,0x2b,0x88,0x65,0x67,0x67,
+ 0xb3,0x7e,0xfd,0xd7,0x21,0x43,0xc6,0x75,0x75,0x75,0xe1,0x8e,0x26,0xd2,0xfa,0x24,
+ 0xc0,0xb7,0x27,0x3,0x0,0x7e,0x11,0x2a,0x73,0xe8,0x29,0xa7,0xf0,0xd6,0x5b,0xff,
+ 0xf6,0x9f,0x5f,0x7c,0xf1,0x25,0xde,0x91,0xb7,0x3a,0x2d,0x6a,0x98,0x53,0xe9,0x9e,
+ 0x78,0xe2,0xb1,0xf0,0x5b,0x7e,0x33,0xc3,0x3,0xee,0xf,0xa4,0x65,0xb7,0x2f,0xf3,
+ 0x3,0x62,0xb9,0x25,0x8a,0xda,0xfa,0xe,0xd6,0x7,0x94,0x25,0x64,0x59,0xe,0x9,
+ 0x52,0xaf,0xed,0x12,0x9a,0x6a,0x6a,0x6a,0x48,0x49,0x9,0x7b,0x38,0xd9,0xa8,0xee,
+ 0x2,0x80,0x7c,0xac,0x1,0xa0,0xd5,0x6a,0xc9,0xce,0xce,0xa2,0xa4,0xa4,0xc4,0x9f,
+ 0x37,0x7e,0xfc,0x38,0x5f,0x6c,0x5d,0xe,0x6b,0xd2,0xc6,0x13,0x4f,0x3c,0xd6,0xd2,
+ 0xf2,0xef,0xbf,0xd7,0x7b,0x94,0x24,0xbf,0xdf,0xee,0x67,0x4d,0x40,0x2b,0x27,0x40,
+ 0x52,0x88,0x56,0xad,0xb3,0xb5,0xcf,0x1f,0x6b,0x89,0xee,0xf0,0xff,0x35,0x1,0xb3,
+ 0x86,0x2,0x53,0xf3,0xc0,0xd5,0x50,0x54,0x5b,0x53,0x4d,0x6c,0x8c,0x25,0xdc,0x7a,
+ 0x4b,0xed,0x2e,0x86,0xf4,0x24,0x0,0x6,0xe0,0xed,0xf6,0xd,0xa2,0x7e,0xfd,0xfa,
+ 0x21,0xcb,0x1a,0xff,0xd6,0xac,0x66,0xb3,0x99,0xac,0xac,0x6c,0xa0,0x79,0xa8,0x57,
+ 0xc7,0xfc,0x7f,0xe2,0xc9,0xc7,0xbd,0x2d,0xff,0xf6,0x65,0xde,0x16,0x7d,0xfb,0xb2,
+ 0xa0,0x28,0x5f,0xa7,0x96,0x6e,0x80,0xba,0x10,0x1d,0x4,0x7e,0x62,0x63,0x2c,0xed,
+ 0xbe,0x83,0x24,0xb7,0x5a,0x77,0xce,0x97,0xf4,0xfa,0xf6,0x7,0xf8,0x34,0x36,0xd9,
+ 0xb0,0x5a,0xc3,0x5e,0x7b,0x30,0xe2,0x64,0x0,0x40,0x48,0xf1,0x6f,0x89,0x89,0xa1,
+ 0xb6,0xb6,0xc6,0xdf,0xf3,0x97,0x37,0x78,0x30,0xb2,0xec,0xed,0xb6,0x55,0x15,0xb5,
+ 0x43,0xff,0xed,0xc9,0xbf,0x3d,0xce,0x32,0x9f,0x18,0xf,0xa5,0xcb,0x5b,0xc7,0xfb,
+ 0x3b,0x2,0x41,0xb3,0x51,0xd7,0x5e,0xe0,0xa7,0xa6,0xb6,0xae,0xfd,0x77,0x11,0x22,
+ 0x64,0x2c,0x40,0xaf,0xd7,0xb7,0xfb,0x97,0x43,0x86,0xc,0xa1,0xbe,0xa1,0xfe,0x98,
+ 0x3,0xa0,0x27,0x6d,0x80,0x89,0xa1,0x32,0xed,0x36,0x1b,0xb1,0xb1,0x71,0xc8,0xb2,
+ 0x8c,0xaa,0xaa,0xc,0x1d,0xda,0xe2,0x3f,0xab,0xaa,0x8a,0x2c,0x75,0x8e,0xd1,0x20,
+ 0x1d,0x1f,0xea,0x7a,0x80,0x2d,0x40,0x40,0xe4,0xaf,0xd,0xdd,0x77,0x8f,0x7f,0x80,
+ 0x69,0x10,0xf3,0x6b,0xea,0x3a,0x9c,0xd5,0xaf,0xaa,0x22,0xa4,0xcf,0xdf,0x1e,0x0,
+ 0xd2,0xd2,0xd2,0x48,0x4f,0x4f,0x67,0x5f,0x61,0xe1,0xff,0x14,0x0,0x52,0x42,0x65,
+ 0xda,0x6c,0x36,0x74,0x3a,0x1d,0xc9,0xc9,0xc9,0x94,0x95,0x95,0x91,0x9d,0x95,0x1d,
+ 0x4,0x0,0x55,0x23,0xc2,0x66,0x7e,0x67,0x20,0x20,0xc0,0x3,0x68,0x63,0x18,0x6,
+ 0x0,0x22,0x90,0x99,0x55,0x35,0xb5,0x1d,0x1b,0xa2,0xed,0x30,0x1f,0x40,0x6f,0x8,
+ 0xad,0x2,0xc6,0x9e,0x76,0x1a,0x0,0xdf,0x7c,0xf3,0x4d,0xb8,0x75,0x67,0x3d,0x19,
+ 0x0,0x90,0xd0,0x1e,0x0,0x24,0x9,0x32,0x32,0x32,0x28,0x2b,0x2b,0x23,0x3e,0x21,
+ 0xde,0x3f,0xb,0x47,0x51,0x3c,0x68,0xb5,0xda,0xe,0xfb,0xf9,0x3b,0x64,0x7e,0x88,
+ 0x56,0xde,0x6c,0xad,0xb7,0x6b,0x18,0x2,0xd5,0x35,0xe1,0xaf,0xfe,0xe1,0x52,0xdc,
+ 0xed,0xae,0x32,0xd3,0x9e,0x11,0x38,0x6e,0xdc,0x38,0x76,0xef,0xde,0x15,0xb4,0x73,
+ 0x59,0x27,0x54,0x7c,0x32,0xd8,0x0,0xed,0x3,0x0,0x89,0x19,0xbe,0xd0,0x68,0x42,
+ 0x7c,0x7c,0x50,0xd7,0xaa,0xa2,0x28,0xed,0x5b,0x80,0x21,0x24,0x80,0x9f,0xf1,0xf7,
+ 0xdd,0xe3,0x4d,0xcd,0xfd,0xff,0xf7,0xdd,0x13,0xbe,0x61,0x18,0xe6,0x94,0x71,0xa1,
+ 0xa,0x84,0xa2,0xb6,0xdb,0x2d,0x6c,0x8,0x61,0x4,0x4a,0x92,0xc4,0xc4,0x9,0x13,
+ 0x58,0xff,0xf5,0xfa,0xae,0xd4,0x5d,0xf1,0x49,0x2b,0x1,0x1a,0x1b,0x1b,0xd9,0xbe,
+ 0x63,0x3b,0xd7,0xfe,0xfa,0x3a,0x9e,0x79,0xe6,0x19,0xe2,0xe3,0x13,0x82,0x16,0x6e,
+ 0x52,0x14,0xc5,0x6b,0x14,0xb6,0xc7,0xb2,0xd6,0x41,0x9f,0x56,0x41,0x1e,0xda,0x33,
+ 0xc,0x5b,0xdb,0x4,0x1,0x12,0x23,0xdc,0xc8,0xa3,0x47,0xf1,0x74,0xb8,0xc8,0x94,
+ 0x46,0xdb,0x76,0xf9,0x85,0xb9,0x73,0xe7,0x92,0x95,0xdd,0x9f,0xf5,0xeb,0x57,0x76,
+ 0xa5,0xee,0x4a,0x4e,0x74,0x0,0xc8,0x78,0xe7,0xfb,0x85,0xa4,0x67,0x9f,0x79,0x96,
+ 0x87,0x1f,0x79,0x84,0x7f,0x3e,0xfd,0xc,0x69,0xe9,0xe9,0x6d,0x44,0xbe,0xc7,0xe3,
+ 0x41,0xab,0xd3,0x21,0x85,0x62,0x4c,0xeb,0xe0,0xcf,0x91,0x18,0x86,0xf7,0xdd,0x13,
+ 0xda,0x38,0xc,0x41,0x8a,0xaa,0x78,0x6d,0x89,0xe,0x0,0x50,0x5f,0x17,0x6c,0xe5,
+ 0x67,0x64,0x64,0xb0,0x6c,0xf9,0x9d,0x48,0x92,0xc4,0x94,0xa9,0x53,0x89,0x89,0x8d,
+ 0x65,0xef,0xcf,0x3f,0x53,0x50,0x50,0x80,0xb5,0xe3,0xa1,0xe3,0x27,0xbc,0x4,0x50,
+ 0x81,0x5a,0xda,0xd9,0x58,0xf1,0xed,0xb7,0xdf,0x62,0xe1,0xf5,0xb,0x19,0x3d,0x7a,
+ 0x54,0xfb,0xf,0x50,0x3c,0xc8,0x1a,0x4d,0x58,0x36,0xc0,0xe1,0x18,0x86,0x41,0xcf,
+ 0x94,0x3a,0x16,0x1,0xc2,0xb7,0x98,0x64,0x67,0x43,0x10,0xcb,0x2b,0xca,0xfd,0xc1,
+ 0xae,0x79,0xf3,0xe6,0x71,0xdd,0x82,0x5,0xbc,0xff,0xde,0x7f,0x38,0x54,0x5e,0x4e,
+ 0x63,0x63,0x23,0x43,0x86,0xc,0x61,0xda,0xb4,0x69,0xc,0x1f,0x36,0xc,0x73,0x64,
+ 0x24,0x1f,0x7e,0xf0,0x1,0x8f,0x3d,0xfe,0x38,0x7,0x83,0xfb,0xf,0x54,0xa0,0xf4,
+ 0x64,0x50,0x1,0x1b,0x81,0x99,0x7a,0xad,0x44,0x8a,0x45,0x4f,0x8c,0x49,0xcb,0xae,
+ 0x43,0x36,0x5c,0x1e,0x81,0xd3,0xe9,0x64,0xde,0xdc,0xb9,0xac,0x5d,0xfb,0x9,0x16,
+ 0x8b,0xa5,0x5d,0x6b,0x4f,0xf5,0x28,0x6d,0x40,0x10,0x8a,0xd9,0x5d,0x35,0xc,0xdb,
+ 0xb4,0x7c,0xd1,0x19,0xf3,0x45,0xfb,0x2a,0x29,0x80,0x2a,0x2b,0x2a,0x30,0x18,0xc,
+ 0x7c,0xfc,0xf1,0x5a,0xb6,0x6d,0xdb,0xc6,0xd9,0x67,0x9d,0xc5,0xa8,0x51,0xa3,0xc8,
+ 0xce,0xce,0xa6,0xb2,0xb2,0x92,0xd,0xeb,0xd7,0xb3,0x6f,0xdf,0x3e,0x6a,0x6b,0x6b,
+ 0xc9,0xcc,0xcc,0xe4,0xda,0x6b,0xaf,0xe5,0xab,0x2f,0xbf,0xe2,0xad,0xb7,0xde,0xe2,
+ 0xd1,0x47,0x1f,0xa5,0xac,0xac,0x14,0xbc,0xbd,0x81,0x9e,0x13,0x1e,0x0,0x6,0xd,
+ 0x8f,0x9c,0x3d,0x2c,0x76,0xe6,0xc2,0xe9,0x9,0x98,0x62,0x5d,0xe8,0x4c,0xa,0xd6,
+ 0xb2,0x34,0x5e,0xd9,0x50,0xc3,0x8b,0xeb,0xab,0x28,0x2a,0x2a,0xe2,0xaa,0xab,0xae,
+ 0xe4,0xc5,0x17,0x5f,0xea,0x70,0xe6,0x8f,0x50,0x55,0xaf,0xd8,0xf5,0x35,0xbf,0xb0,
+ 0x25,0xc0,0x1d,0xcb,0xbd,0x86,0x1b,0x6d,0x7b,0xff,0xc2,0x25,0xa1,0xaa,0x6d,0xdc,
+ 0xc4,0x8e,0xa8,0xa2,0xa2,0x92,0xf9,0xf3,0xe7,0xb3,0x77,0xef,0x5e,0x16,0x2f,0xbe,
+ 0x99,0xbb,0xee,0xfa,0x13,0xb3,0x66,0xcd,0xa,0xb2,0x51,0x5c,0x2e,0x17,0x9b,0x37,
+ 0x6f,0x66,0xcd,0x9a,0xf7,0x79,0xf8,0xe1,0x87,0x79,0xf2,0xc9,0x27,0xf9,0xfd,0xef,
+ 0x7f,0xcf,0xa7,0x9f,0x7e,0xca,0xb9,0xe7,0x9e,0x43,0x41,0x41,0xc1,0xdb,0xdd,0xc9,
+ 0x97,0x1e,0x3,0xc0,0x17,0xb7,0xf,0x3e,0xcd,0x90,0x62,0x75,0xf,0x3d,0x7f,0x9f,
+ 0x4e,0x67,0xf2,0x2,0x5a,0xf5,0xc8,0x24,0xd,0x48,0x66,0x6a,0x5e,0x3f,0x6e,0xfb,
+ 0xd7,0x1,0xbe,0xfb,0xee,0x3b,0xce,0x39,0xe7,0x6c,0x5e,0xfd,0xd7,0x6b,0x64,0x66,
+ 0x66,0x76,0xe8,0xfa,0x11,0x30,0xb2,0xb7,0x8d,0x55,0xdf,0x89,0x61,0x18,0x2a,0x62,
+ 0xd8,0x2c,0x1d,0x2a,0xab,0x83,0x5d,0x33,0x29,0x70,0x10,0x69,0x47,0xee,0xa8,0xe2,
+ 0xa6,0xf2,0xbf,0xab,0xb0,0xed,0xff,0x16,0x49,0xa3,0x23,0x6a,0xd0,0x4c,0xb4,0x1e,
+ 0x2b,0x97,0x5f,0x7e,0x5,0xd3,0xa6,0x4d,0xe5,0x8c,0x99,0x33,0x19,0x31,0x62,0x4,
+ 0x7b,0xf7,0xee,0x6d,0x6b,0x1d,0x27,0x24,0x70,0xf5,0xd5,0xd7,0x70,0xfe,0xf9,0x17,
+ 0xf0,0xaf,0x7f,0xbd,0xca,0x92,0x25,0x4b,0x28,0x2a,0x2a,0xe2,0xb6,0x25,0x4b,0xb9,
+ 0x7e,0xe1,0x82,0x77,0x4e,0x78,0x0,0xac,0xfb,0xc3,0x29,0xd9,0xb2,0xde,0x7d,0xf3,
+ 0xf0,0x4b,0x4a,0x75,0xb2,0x56,0xf5,0x73,0x41,0x96,0x55,0x46,0x5c,0x50,0x46,0x7a,
+ 0x5e,0x14,0xf1,0xe6,0x2c,0xe6,0x3f,0xb3,0x8f,0xfc,0xfc,0x7c,0xce,0x3a,0x73,0x26,
+ 0xcf,0x3f,0xff,0x2,0xa7,0x8d,0x1b,0xd7,0x79,0xab,0xc,0xa7,0x9f,0x3f,0x4c,0xc3,
+ 0xb0,0x2a,0x88,0xf9,0xc2,0xeb,0xed,0x85,0xd9,0xe2,0xab,0xd7,0xfd,0xd,0x93,0xfd,
+ 0x6d,0x86,0xcc,0x28,0xc2,0xa3,0x68,0xa8,0x28,0xde,0xcd,0x1f,0x26,0x26,0xf3,0xc4,
+ 0xca,0xb9,0xa8,0xaa,0x4a,0x4a,0x72,0x32,0x7b,0xf3,0xf3,0xdb,0xf1,0x3a,0x5b,0xc0,
+ 0x39,0xf4,0x94,0x61,0xac,0x59,0xb3,0x86,0x37,0xdf,0x7c,0x93,0xe9,0xd3,0x67,0xd8,
+ 0x7c,0x2a,0xe0,0xc4,0x5,0x80,0x0,0xe9,0x3b,0xbd,0x67,0xf5,0x80,0x99,0xa5,0x31,
+ 0xb2,0x56,0x5,0x21,0x81,0x7e,0x16,0x42,0x77,0x3e,0xa8,0x8d,0x48,0xf6,0xff,0x23,
+ 0x21,0x67,0x3b,0xe3,0x2f,0x81,0xa7,0xd4,0x7e,0xcc,0x7b,0x7a,0x1f,0x55,0x55,0x55,
+ 0x5c,0x78,0xe1,0x5,0xac,0xbc,0xeb,0x2e,0xae,0xef,0x64,0x85,0xee,0x70,0x6d,0x80,
+ 0xe,0x6d,0x83,0x3b,0x96,0x53,0x55,0x5d,0xdd,0x46,0xf9,0x77,0x65,0xd5,0x99,0xa6,
+ 0x7d,0xeb,0xe8,0x3f,0xee,0x0,0xc8,0x51,0x68,0x23,0x72,0x48,0x1d,0xaa,0x90,0x9a,
+ 0xb3,0x95,0x5,0xcf,0x79,0x43,0x2d,0x85,0x85,0xfb,0x30,0x9b,0x23,0xdb,0x30,0xbc,
+ 0x35,0x6d,0xd9,0xe2,0x1d,0x12,0xdf,0xcf,0xdc,0x44,0xc2,0x96,0x15,0xda,0x6f,0x57,
+ 0xe4,0xbd,0xe3,0x71,0xa8,0x37,0x4e,0x5c,0xb5,0xa7,0xec,0x84,0x4,0xc0,0xb7,0x2b,
+ 0xf2,0xfe,0x11,0x3f,0xa0,0x7e,0x48,0x6c,0xb6,0x55,0x42,0xc4,0x23,0x22,0x1e,0x4,
+ 0x5d,0x4b,0xcb,0x16,0xba,0x89,0x48,0x4d,0xf7,0x93,0x90,0xbd,0x9a,0xf1,0xe7,0xc9,
+ 0x3c,0xe9,0xca,0xe4,0xaa,0xa7,0xf6,0xe1,0xf1,0x78,0x58,0xbe,0x6c,0x19,0x3f,0x6c,
+ 0xda,0xc4,0xa3,0x8f,0x3e,0x86,0xd9,0x6c,0xe,0x3b,0x12,0xd8,0x55,0xc3,0xb0,0xba,
+ 0xfa,0xc8,0xf6,0x79,0xf4,0xd8,0xea,0xc0,0xd3,0x80,0x4e,0xe7,0x41,0xa4,0xfe,0x9,
+ 0x2c,0x67,0xf8,0x50,0xf1,0xd,0xa5,0xd5,0xde,0xf9,0x1d,0x9b,0x37,0x7b,0xb7,0xab,
+ 0x6f,0x6f,0x1b,0x7a,0x21,0x4,0xfb,0xf7,0x17,0x51,0x50,0x50,0x0,0xc0,0xcd,0x8b,
+ 0x9a,0x98,0x74,0xd1,0x36,0x7d,0xe5,0x5e,0xcb,0x79,0x5,0x5f,0xa5,0xe,0xc4,0x3b,
+ 0x32,0xe8,0xc4,0x2,0xc0,0x37,0xcb,0x6,0xdf,0x61,0x4e,0xb2,0x5f,0x36,0xe0,0x8c,
+ 0xb2,0x28,0x54,0x10,0xe6,0x7b,0x40,0x3b,0x6,0x84,0xc7,0xe7,0xdd,0x8,0xef,0xe2,
+ 0xc,0xa6,0xdf,0x22,0xd9,0xbf,0x25,0x79,0x50,0x1,0x43,0x47,0x99,0xb8,0x66,0x42,
+ 0x3c,0xcf,0x7d,0x5d,0xe5,0x73,0x11,0xdf,0x66,0xe7,0xce,0x9d,0xbc,0xf8,0xe2,0x4b,
+ 0xc,0x18,0x30,0xe0,0xe8,0x4a,0x80,0x3b,0x96,0x53,0x53,0x53,0x7b,0xc4,0xe5,0xb4,
+ 0x97,0x6e,0x27,0x26,0xa1,0x1,0xf4,0xd9,0x10,0x35,0x5,0x54,0xdf,0x8,0xa1,0x88,
+ 0x53,0x49,0x4d,0xeb,0x47,0x6d,0x43,0x21,0x56,0xab,0x95,0xef,0xbf,0xff,0x8e,0x3e,
+ 0xc9,0xc9,0x68,0x2,0x3c,0x19,0x87,0xc3,0x81,0xad,0xa9,0x9,0x9b,0xcd,0xe6,0x1f,
+ 0x59,0x34,0xe6,0x14,0xb8,0xec,0x1c,0xef,0xf5,0xc4,0x81,0xf5,0xf2,0x81,0x2d,0x89,
+ 0x49,0x5f,0xde,0x96,0x37,0x60,0xca,0x5f,0x76,0xed,0x3d,0xda,0x3c,0x3a,0xa2,0x41,
+ 0xa1,0x1b,0x7e,0x37,0xde,0xa4,0x6a,0xac,0xe7,0x61,0x50,0x73,0xb4,0x5a,0x35,0x13,
+ 0x9,0xc9,0xe3,0xd4,0x14,0x4a,0xe0,0xd2,0x18,0x94,0x8b,0x75,0x26,0xcf,0xd0,0x11,
+ 0x57,0x16,0x5a,0x64,0x8d,0xa,0xfa,0xb,0x11,0xe6,0x15,0x7e,0xa6,0x7,0x1d,0x51,
+ 0xc1,0xbd,0x7,0xa9,0x66,0x1,0xaa,0x5b,0xe5,0xf3,0x67,0xb2,0x99,0xf7,0x8f,0x12,
+ 0x4a,0x6a,0x5b,0x86,0x5a,0x99,0xcd,0x66,0x9e,0x78,0xe2,0x49,0x2e,0xb8,0xa0,0x65,
+ 0xd5,0xb8,0xd8,0xd8,0x98,0x23,0x2a,0x7c,0x6d,0x6d,0xdd,0x51,0xa9,0xc4,0xfa,0x3d,
+ 0xeb,0x50,0xb7,0x2f,0x22,0x6b,0x4c,0x1f,0x44,0xbf,0x87,0x83,0x6a,0xf6,0xaa,0xeb,
+ 0x56,0xb2,0xfa,0xb5,0x8f,0xc3,0x7e,0x56,0x6c,0x34,0x7c,0xf7,0x16,0xc,0xc8,0xc2,
+ 0xbf,0xc5,0x5d,0xf1,0xc6,0x3e,0xce,0xe2,0x8d,0x89,0xd7,0x4d,0x5a,0xb5,0xfd,0xa5,
+ 0xe3,0x46,0x2,0x6c,0x58,0x36,0xe4,0xa,0x8d,0xae,0xf6,0xf1,0x3e,0x79,0xf5,0xa6,
+ 0x88,0x4,0x47,0x84,0x3e,0xd2,0x83,0x4,0x38,0x1b,0xb5,0x42,0xb8,0x64,0x35,0x3a,
+ 0xa3,0x49,0x63,0x8e,0x6f,0x1e,0x2c,0x99,0x81,0x30,0xdd,0xe4,0xdd,0xd2,0x55,0xa8,
+ 0x41,0xad,0xdf,0xdf,0xa7,0xae,0xe9,0xb,0x11,0x57,0x22,0x5b,0x9f,0x67,0xcc,0x39,
+ 0x7,0xf9,0x73,0x6d,0x1a,0x57,0x3d,0x55,0x88,0xea,0x53,0x97,0xa9,0xa9,0xa9,0xdc,
+ 0x73,0xcf,0xdd,0x6c,0xda,0xb4,0x91,0x3f,0xae,0x5c,0x89,0x56,0xab,0xa5,0xb6,0xae,
+ 0x8e,0xe3,0x81,0x34,0x7a,0x3,0x1e,0x55,0xf,0x72,0x84,0xb7,0xf5,0x7,0x74,0x4c,
+ 0x3c,0xfd,0xd8,0x2d,0xc4,0xc7,0x46,0xf2,0xe4,0xd3,0xef,0xe0,0xf1,0x74,0xbc,0xa9,
+ 0x78,0x5e,0x6e,0xa,0xef,0xfd,0x5d,0xd0,0x3f,0xfd,0x10,0x81,0x83,0x1c,0x4c,0x16,
+ 0xa7,0x41,0x67,0x54,0xba,0x65,0x7e,0xc0,0x61,0xad,0x15,0xfc,0xed,0x4d,0x39,0xd1,
+ 0x92,0x59,0xfa,0xe0,0xd4,0x6b,0xf7,0x26,0x26,0xe4,0x36,0xe8,0x22,0xfb,0x38,0x30,
+ 0xc5,0xb8,0x30,0xc5,0xb8,0x88,0x4c,0x72,0x48,0x51,0xc9,0x76,0x59,0x6f,0xf2,0x78,
+ 0xb,0xa1,0x3d,0x15,0x11,0xf5,0x10,0x48,0x46,0x9f,0xe8,0x77,0x7b,0xe3,0x1a,0x22,
+ 0xe0,0xd8,0x9c,0xaf,0xcd,0x45,0x72,0x6c,0xc6,0x10,0x71,0x8,0x4f,0x83,0x11,0x6b,
+ 0x8d,0x81,0x6d,0x7,0xec,0xfe,0x3e,0x83,0x25,0x4b,0x96,0xb2,0xee,0xeb,0x75,0xac,
+ 0x5e,0xbd,0x9a,0x19,0x33,0x66,0x10,0x19,0x19,0x19,0xd6,0x42,0x4e,0xdd,0x9d,0x3c,
+ 0x8d,0xd5,0x38,0xf7,0x7f,0x48,0x7c,0x9a,0x16,0xa2,0x27,0x2,0xa,0x8,0x6f,0xd2,
+ 0x6a,0xe1,0xcc,0xe9,0xa3,0xb8,0x6e,0xee,0x59,0x44,0x47,0x9b,0x29,0x39,0x50,0x49,
+ 0x5d,0x7d,0xf0,0x48,0xa0,0xc1,0x83,0x32,0xb9,0xea,0x8a,0xe9,0xbc,0xfc,0xf4,0xed,
+ 0xa4,0xf4,0x89,0x2,0xc7,0xb7,0x41,0x32,0x5a,0xf5,0x48,0x54,0x17,0x46,0x37,0xfc,
+ 0xf3,0x8b,0xea,0xd5,0xc7,0x85,0x4,0xf0,0xe8,0x4d,0x13,0x92,0x72,0x6a,0xc,0x3a,
+ 0x93,0xe2,0x6f,0xcc,0x8,0x40,0x93,0x7,0xba,0xd3,0x80,0x68,0x84,0xd4,0x7,0x34,
+ 0xfd,0x41,0x4e,0xf0,0xb6,0x78,0x7f,0xeb,0x17,0xed,0x1f,0x51,0x11,0xd1,0xbf,0x41,
+ 0xaa,0xbc,0x8d,0x61,0xd3,0xca,0x99,0x5b,0xd2,0x9f,0xcf,0x77,0x5b,0x29,0xab,0x73,
+ 0xe1,0x72,0xb9,0xf8,0xfc,0x8b,0xcf,0xb9,0x76,0xfe,0xb5,0xbc,0xff,0xfe,0x7b,0x4c,
+ 0x9d,0x32,0x85,0xe7,0x9e,0x7b,0x9e,0xf1,0x47,0xb6,0x5a,0xe7,0xd1,0xe9,0xe8,0xd0,
+ 0x1a,0x51,0x3d,0x1a,0x70,0x55,0xb4,0x48,0x80,0x40,0xc3,0x3,0x48,0x4e,0x34,0x73,
+ 0xe7,0xad,0x97,0x72,0xe7,0xad,0x97,0xe2,0x74,0xb9,0x29,0x2a,0x2e,0xa7,0xa4,0xac,
+ 0x8a,0xa1,0x79,0x99,0x24,0x27,0x7,0x4,0xbe,0x1a,0x8a,0x83,0x9d,0x11,0x15,0x8c,
+ 0xd1,0x6e,0x84,0x20,0xbb,0xbb,0x3a,0x69,0xba,0xee,0xda,0xc9,0x42,0x23,0x6b,0x54,
+ 0x99,0x0,0x69,0x8e,0xee,0x17,0x88,0xc8,0x47,0x10,0xfa,0x39,0x8,0xfd,0x39,0xa0,
+ 0x3b,0x15,0xa4,0x68,0x10,0xe,0x2f,0xf3,0xd5,0x30,0x8e,0xaa,0x13,0xa4,0x58,0x44,
+ 0xe4,0x65,0x68,0x64,0x95,0x51,0x33,0xe,0x72,0xdf,0xa5,0x69,0xfe,0xfa,0xdc,0xb4,
+ 0x71,0x23,0x25,0x7,0xe,0x30,0x65,0xea,0x34,0x66,0x9c,0x71,0x6,0x17,0x5f,0x7c,
+ 0x11,0xaf,0xbc,0xf2,0xca,0x31,0x97,0x0,0x1a,0xbd,0x1,0x55,0xd5,0x82,0xab,0xd2,
+ 0x5b,0x86,0x8e,0x92,0x70,0x62,0xd0,0xa9,0xe4,0xe6,0x24,0x32,0x7d,0x72,0x1e,0xc9,
+ 0x89,0x11,0x2d,0xd7,0x94,0x2a,0xb0,0xad,0x6b,0x33,0xe2,0x4c,0x67,0xf0,0x80,0x4c,
+ 0xd2,0x97,0xb7,0xe5,0xd,0x38,0x2e,0x0,0x20,0x49,0x72,0x95,0xab,0x51,0xe7,0x26,
+ 0xc0,0x86,0x13,0xba,0x33,0x7d,0xe2,0xdc,0xd9,0xc2,0xf4,0xae,0x30,0x5f,0x38,0x7c,
+ 0x20,0x70,0x80,0x71,0x22,0xe8,0x6,0x11,0x9b,0xd2,0xc8,0xd0,0xc1,0x2e,0x2e,0x1d,
+ 0x1d,0xe7,0xb,0xad,0x56,0xf0,0xcd,0x86,0xf5,0x94,0x95,0x96,0x32,0x78,0xf0,0x10,
+ 0xe6,0xfc,0xea,0x57,0x2c,0x5d,0xba,0x84,0xcf,0x3e,0xfb,0xf4,0xb0,0x56,0xf4,0x38,
+ 0x5a,0x49,0xd6,0x19,0x51,0x15,0x9,0x3c,0xd,0xa0,0x34,0x85,0x64,0x7a,0xd0,0x31,
+ 0xd4,0x35,0xa5,0x1a,0xa9,0x72,0x25,0x78,0x2a,0x83,0xa5,0xaa,0x2f,0xe5,0x4e,0x3b,
+ 0x10,0xab,0x37,0xf2,0xee,0xeb,0xb3,0x66,0x69,0x8e,0x39,0x0,0x64,0x59,0xa9,0x72,
+ 0x37,0x69,0xd5,0x66,0xe6,0xa3,0x2,0x98,0x7c,0x5,0x6a,0xd5,0xa2,0x43,0xb6,0xf4,
+ 0xd6,0xc9,0xd9,0xea,0x5e,0x27,0x22,0xea,0x32,0x10,0x7a,0x86,0x4f,0x3e,0xc4,0x75,
+ 0xd3,0xe2,0x49,0x8e,0xf6,0x8e,0xae,0xd9,0xba,0x6d,0x1b,0x7,0x4a,0x4b,0x29,0x2b,
+ 0x2d,0x25,0x25,0x39,0x85,0x4b,0x67,0xcd,0xe2,0x9a,0x6b,0xae,0x61,0xd7,0xae,0x5d,
+ 0xc7,0x50,0x2,0x18,0x51,0x15,0xdf,0x10,0x76,0x57,0x79,0x58,0x52,0x20,0xe8,0xe8,
+ 0xa9,0x41,0xaa,0xbc,0xf,0x5c,0xc5,0xa1,0xc7,0x9d,0xaa,0x60,0x49,0x69,0x22,0x29,
+ 0xa7,0xae,0x6f,0xdf,0xdc,0x1d,0x77,0x1f,0x73,0x0,0x38,0x1d,0xba,0x2a,0xb7,0x5d,
+ 0x2b,0xf9,0x99,0xaf,0x2,0x4a,0x99,0xaf,0x15,0x7,0x30,0x59,0x38,0x42,0x33,0x3c,
+ 0x14,0x20,0x14,0xdf,0x6f,0x9b,0x8f,0x44,0x20,0x4c,0x53,0xd1,0x6a,0x15,0x46,0x4e,
+ 0x3e,0xc4,0x3d,0x97,0x78,0x97,0xf,0x3c,0x58,0x56,0x46,0xd1,0xbe,0x7d,0x94,0x96,
+ 0x96,0x72,0xa0,0xb4,0x14,0x4b,0xb4,0x85,0xfe,0x39,0x39,0xcc,0x9e,0x3d,0xdb,0x1b,
+ 0xb3,0x3f,0x6,0x22,0x40,0xd2,0x19,0x51,0x94,0x66,0x66,0x59,0x41,0x75,0x85,0x9f,
+ 0x94,0x6,0xa4,0xaa,0xbf,0x82,0xb3,0xb8,0xd3,0x49,0xac,0xfd,0xc6,0x1d,0x32,0x6b,
+ 0xf4,0x9e,0x1b,0xbe,0xba,0x6d,0xc8,0x84,0x63,0xa,0x80,0xa9,0x8f,0xfc,0x58,0xef,
+ 0x71,0xc9,0x41,0x36,0x80,0x64,0xfb,0x20,0x98,0xe9,0xa1,0xf4,0x7b,0xeb,0x73,0xa5,
+ 0xfd,0x7c,0xa1,0x3a,0x21,0x62,0x2c,0x48,0x71,0x24,0xa4,0x5a,0x39,0x25,0xd7,0xc3,
+ 0x85,0x23,0x62,0xf1,0x78,0x3c,0xec,0xdc,0xb5,0x93,0xd2,0x32,0xaf,0x14,0x28,0x2d,
+ 0x2d,0x25,0x6f,0x50,0x1e,0x87,0xe,0x1d,0xe2,0xf3,0xcf,0x3e,0x3f,0xea,0x4b,0xc8,
+ 0x85,0xf3,0x11,0x68,0x69,0xa8,0x6f,0xf4,0xd6,0x85,0xa7,0x29,0xbc,0xd6,0xaf,0x3a,
+ 0x41,0x69,0x44,0xaa,0x7a,0x2,0x9c,0x45,0x21,0x5b,0x7d,0xeb,0x73,0x59,0x16,0xc,
+ 0x39,0x7b,0x7f,0x8c,0x21,0x42,0xf9,0xcf,0xd7,0x4b,0x86,0xce,0x38,0x76,0x36,0x0,
+ 0x8,0x54,0x94,0xa0,0x97,0x75,0xfe,0x4,0xf6,0x8f,0x42,0x33,0xbd,0x59,0x35,0xb4,
+ 0x66,0xba,0xef,0x28,0x2,0x41,0x20,0x1c,0x80,0x13,0x49,0x38,0x40,0xf5,0x20,0xcc,
+ 0xbf,0x0,0x15,0x4e,0x9d,0x78,0x90,0x1b,0x7e,0x99,0x40,0x42,0xa4,0x96,0xea,0xaa,
+ 0x2a,0xa,0xf2,0xf3,0x29,0x2d,0x2b,0xa5,0xb4,0xac,0x94,0x8a,0x8a,0xa,0x5f,0x54,
+ 0xcd,0xde,0xe3,0x2,0x40,0x8,0x95,0x5,0xd7,0x5f,0x8f,0xcb,0xe5,0x73,0x7b,0x15,
+ 0x1b,0x28,0xcd,0xc,0xee,0x48,0x15,0xd8,0x91,0xaa,0x9f,0x5,0x47,0x7e,0x97,0xa6,
+ 0xb2,0x9b,0x2c,0x4e,0x86,0x5f,0x54,0x10,0x67,0x30,0xbb,0x5e,0x5f,0xf7,0x87,0xa1,
+ 0xf3,0xc5,0x11,0x6,0xf3,0xe,0x7f,0x50,0xa8,0x2a,0xb9,0x85,0x22,0x11,0xa8,0x6,
+ 0xa4,0xc6,0xb7,0xc0,0xb5,0xa3,0x2d,0xf3,0x3b,0x62,0xb6,0x68,0x66,0x76,0xb3,0x1a,
+ 0xf0,0x1d,0x15,0x1f,0x58,0xb4,0xa9,0xa0,0xcf,0x46,0xab,0x53,0x18,0x7e,0x5a,0x39,
+ 0x77,0x5d,0x98,0x86,0x10,0x82,0xca,0xca,0x4a,0xa,0xb,0xa,0xd8,0xb3,0x7b,0x37,
+ 0xeb,0xd7,0x7f,0x8d,0xdd,0x6e,0x67,0xcc,0x98,0x31,0x3d,0xae,0xff,0x17,0x2d,0x5a,
+ 0xc4,0x1b,0x6f,0xbc,0xe1,0xed,0x9d,0x16,0xf8,0x44,0x7b,0x27,0x36,0x80,0xea,0x40,
+ 0xaa,0x7e,0x5,0x6c,0xbb,0x3a,0x6e,0xf5,0xed,0x24,0x83,0xd9,0xcd,0xf0,0x4b,0xa,
+ 0x63,0x12,0xb3,0xea,0xff,0xfa,0xdd,0x8a,0xbc,0xc2,0xd,0x4b,0x87,0xcc,0xec,0xf1,
+ 0x48,0xa0,0xa4,0x15,0xb5,0x1e,0x9b,0x26,0x45,0x67,0xf4,0x4,0x44,0xad,0x14,0xa4,
+ 0xba,0x7f,0x20,0x4c,0x33,0xc0,0x38,0x1,0x81,0x40,0x42,0xf5,0x8d,0xa2,0xf5,0x96,
+ 0x4e,0x6a,0x8e,0x4,0x36,0xe7,0xf9,0x47,0xf8,0xaa,0x2d,0xe7,0x6a,0x40,0x7c,0x40,
+ 0x8,0x84,0x71,0x2c,0x92,0xad,0x98,0x3e,0xe9,0xd,0x8c,0x1c,0x18,0xc3,0x8c,0x3c,
+ 0xb,0x9f,0xec,0xaa,0xc7,0x66,0xb3,0x61,0xb3,0xd9,0x0,0xb8,0xf2,0xca,0x2b,0x49,
+ 0x4d,0xed,0xb6,0x29,0x74,0x6d,0x48,0x51,0x14,0x16,0x2f,0x5e,0xcc,0xb3,0xcf,0x3e,
+ 0x4b,0x84,0x5e,0x46,0x23,0xab,0xde,0x7a,0x90,0xcd,0x3e,0x70,0x7,0x4,0xda,0x5b,
+ 0x77,0x42,0x58,0xd7,0x81,0x6d,0x1b,0x6d,0x26,0x26,0x42,0x9b,0x18,0x40,0x50,0x13,
+ 0xd,0x38,0xd7,0x19,0x3c,0xe4,0x4e,0x2f,0xb1,0xd8,0xeb,0xc,0x96,0x9f,0xbf,0x48,
+ 0xfb,0xd7,0xb7,0x77,0xe,0xfa,0xca,0xae,0x49,0xbe,0x64,0xda,0xca,0x2f,0x3c,0x3d,
+ 0x2,0x0,0x4,0x55,0x6e,0x9b,0xc6,0xeb,0xa3,0x6,0x21,0x54,0x45,0x6a,0xfc,0x18,
+ 0x5c,0xfb,0xc0,0x7c,0x2e,0x48,0xba,0x20,0x0,0xb4,0x30,0x3d,0x4,0xb3,0x69,0xcb,
+ 0x7c,0x84,0xa,0x92,0x1e,0x61,0x1c,0x82,0xd4,0xf4,0x13,0xa3,0x26,0x94,0x71,0x4b,
+ 0x5d,0x16,0xdf,0x17,0x35,0x62,0x75,0xa,0x6,0xd,0x1a,0xc4,0x75,0xb,0x16,0xb0,
+ 0x70,0xe1,0xc2,0xae,0xf5,0xdf,0x1e,0x1,0xd9,0x6c,0x36,0xae,0xba,0xf2,0x4a,0xd6,
+ 0xac,0x59,0x3,0xc0,0x80,0x24,0x13,0xe6,0x68,0x7,0x8,0xd,0x48,0x6,0xaf,0xf4,
+ 0x92,0x5a,0xf5,0x44,0x35,0x7f,0x77,0x1f,0x42,0x6a,0xf8,0x3a,0x18,0x1c,0xed,0x1,
+ 0x80,0xce,0x1,0x62,0x8a,0x71,0x32,0xfc,0xa2,0xc2,0x98,0x7d,0xeb,0x53,0x7e,0x59,
+ 0xb1,0x47,0xfe,0x13,0x70,0x47,0xf,0x1,0x40,0x94,0xbb,0xed,0x5a,0xb0,0x38,0x83,
+ 0x1,0xd0,0xfc,0x92,0x8e,0x9f,0x91,0x9c,0xcf,0x22,0xa2,0xce,0x1,0x39,0xbe,0x85,
+ 0xb9,0x22,0x44,0x4,0x50,0x6d,0x7,0x1c,0x81,0xd7,0xf5,0xfd,0xc1,0x96,0x8f,0x5e,
+ 0xd7,0xc4,0x90,0xe1,0x55,0x3c,0x70,0xcd,0x28,0x66,0xdd,0xfb,0x11,0x91,0x91,0x91,
+ 0x3d,0x1a,0xf5,0xab,0xac,0xac,0xe0,0xc2,0xb,0x2f,0x64,0xd3,0xa6,0x4d,0xfe,0xbc,
+ 0x21,0x69,0x46,0xfa,0x26,0xdb,0x41,0x6b,0xf1,0xaa,0x80,0xf6,0x98,0x2f,0x81,0xd4,
+ 0xb0,0xc1,0x57,0xae,0xce,0x5b,0x79,0x57,0x0,0x11,0xd7,0xaf,0xc1,0x5c,0x59,0x10,
+ 0xdd,0xbf,0xe7,0x6c,0x0,0x59,0xf2,0x8,0x4f,0xb0,0xd,0x10,0x14,0x17,0x50,0x1,
+ 0x4f,0x1d,0x52,0xed,0xab,0xd0,0xf8,0x5,0xb8,0x1b,0x42,0xdb,0x5,0xa1,0xf4,0x7e,
+ 0x73,0xbe,0xe2,0x0,0x4f,0xf4,0x3f,0x77,0xbc,0x0,0x0,0x7,0xc3,0x49,0x44,0x41,
+ 0x54,0xb3,0xfb,0xe8,0x46,0x18,0x7,0x83,0xa,0xe9,0x7d,0x6b,0x19,0x92,0x58,0xc1,
+ 0x9a,0xd7,0x9f,0xeb,0x51,0x83,0x2f,0x3f,0x7f,0x2f,0x93,0x26,0x4d,0xa,0x62,0x3e,
+ 0xc0,0xd8,0x6c,0x13,0xd1,0xd1,0x76,0xd0,0xc6,0x81,0xe2,0x2,0x8f,0x2f,0x29,0xae,
+ 0x96,0x73,0xc5,0x5,0xee,0x7a,0xb0,0x17,0x75,0x6d,0xd,0x23,0x35,0xbc,0x73,0x8f,
+ 0x53,0x83,0x10,0x92,0xad,0xc7,0x0,0x20,0x14,0x69,0x6a,0x54,0xa2,0xad,0x7d,0xe6,
+ 0xfb,0xf3,0x54,0x24,0xdb,0x56,0xa4,0xda,0xd7,0xc0,0xbe,0x23,0x80,0xe1,0xce,0x0,
+ 0xa6,0x7,0x30,0xbc,0x99,0xe9,0x4a,0x40,0x70,0xa8,0xf9,0xba,0x6c,0x1,0x39,0x6,
+ 0x4,0x8c,0x3e,0xad,0x8c,0xc4,0xfc,0x67,0xd8,0xb2,0xf9,0x87,0x6e,0x37,0xf4,0x84,
+ 0x10,0x3c,0xf5,0xd4,0x53,0x9c,0x7e,0xfa,0xe9,0xec,0xdb,0xb7,0xaf,0x4d,0x5d,0xf4,
+ 0x4f,0x30,0x12,0x11,0xe1,0x40,0x68,0x2c,0xc1,0x96,0xbf,0xd2,0xca,0x13,0x70,0x14,
+ 0x7b,0x5b,0x7f,0x67,0x4c,0x3d,0x8c,0x54,0xfa,0x53,0x42,0x8d,0xcb,0xae,0xf9,0x5b,
+ 0x8f,0x18,0x81,0x5f,0x2f,0x1d,0x3c,0xc4,0x14,0x6d,0xd7,0xfb,0xd,0x9f,0x50,0x89,
+ 0xd6,0x79,0xe,0xa4,0xc6,0x6f,0x40,0xde,0x8d,0x30,0xe,0x7,0x4d,0x4c,0x68,0x91,
+ 0xdf,0x91,0xbd,0x80,0x8a,0xd0,0x67,0x20,0xb9,0xea,0x30,0x1a,0x5c,0xc,0x1a,0x50,
+ 0xce,0x3b,0xff,0xbc,0x89,0xbe,0x99,0xef,0x85,0xbb,0xfc,0x6a,0x97,0x69,0xeb,0xd6,
+ 0xad,0x5c,0x7f,0xfd,0xf5,0x7c,0xff,0xfd,0xf7,0x21,0xaf,0x9b,0xf4,0x32,0x46,0xbd,
+ 0x40,0x96,0x4,0x42,0x8e,0xa,0xd6,0xff,0x81,0xe2,0x5f,0x6,0xc9,0x55,0x11,0x5c,
+ 0x37,0x87,0x61,0xfc,0x85,0xfa,0x6d,0x4d,0x51,0x94,0x6a,0xaf,0xd5,0x97,0x4c,0x5e,
+ 0xb5,0xe3,0xfb,0x9e,0x9,0x5,0x6b,0xc4,0xec,0xa4,0xec,0xfa,0x98,0x76,0x5b,0xbd,
+ 0xe8,0x20,0xcf,0x5d,0x8b,0xd4,0xf0,0x5,0x52,0xe3,0x46,0x5f,0xec,0xbc,0x95,0x34,
+ 0x68,0x76,0x11,0x5b,0xe7,0x2b,0xe,0xf0,0x38,0x1,0xbd,0xb7,0x93,0x49,0x85,0x7e,
+ 0x59,0xd5,0x9c,0x9a,0x54,0xc3,0xf2,0x45,0xf3,0x50,0x7d,0xc3,0xc5,0x8f,0x56,0x6a,
+ 0x6a,0x6a,0x62,0xc9,0x92,0x25,0x8c,0x1d,0x3b,0xb6,0x5d,0xe6,0x3,0xc,0x4c,0x32,
+ 0x11,0x15,0x69,0xf7,0x31,0xc9,0x14,0xdc,0xf2,0x3,0x25,0x80,0xe2,0x4,0x57,0xf5,
+ 0xd1,0x59,0xda,0x2e,0xa0,0x4e,0xeb,0xcb,0xcc,0xe2,0xe7,0x2f,0xd3,0xf,0x7a,0x5c,
+ 0xe2,0xb0,0xf6,0xad,0x39,0x2c,0x9,0x20,0x6b,0xc5,0xec,0xb8,0x34,0xab,0x26,0x88,
+ 0xb9,0x84,0x2b,0x9,0x9a,0xe3,0xc9,0xa5,0x48,0x8e,0x43,0x8,0x43,0x26,0xe8,0x52,
+ 0xfc,0x1e,0x44,0xbb,0x12,0x21,0xe0,0x28,0x34,0x71,0x48,0xee,0x6,0x10,0x30,0xe6,
+ 0xd4,0x52,0xea,0xad,0x32,0xf3,0xe6,0xcd,0xe5,0x2f,0x7f,0x79,0x90,0x3e,0x7d,0xfa,
+ 0x1c,0x76,0x6b,0x77,0x3a,0x9d,0x7c,0xfc,0xf1,0xc7,0xbc,0xf6,0xda,0x6b,0xbc,0xff,
+ 0xfe,0xfb,0x34,0x36,0x76,0xbe,0x82,0xc7,0x90,0x54,0x23,0x19,0x7d,0x1c,0x5e,0x60,
+ 0x22,0xb7,0x48,0x80,0xc0,0xe6,0xd5,0x2c,0x9,0x14,0x5b,0x4b,0xf9,0x8f,0xd0,0xf8,
+ 0x73,0x58,0xf5,0x1c,0xd8,0x9e,0x60,0xad,0xda,0x67,0x69,0x70,0x28,0x86,0x89,0xd3,
+ 0x56,0xfd,0x58,0xd6,0x23,0x0,0xf8,0xee,0xf6,0x41,0xf1,0xb2,0x46,0x24,0xe8,0x8d,
+ 0xee,0x16,0x24,0x12,0x26,0xe3,0xdb,0xe4,0x2b,0x48,0xb6,0x42,0x90,0xca,0x10,0x86,
+ 0xc,0x90,0xa3,0x5a,0xb9,0x87,0x1,0xdf,0x3,0xe3,0x5,0xc8,0x80,0x1,0x54,0x27,
+ 0x26,0x93,0x93,0xbe,0x69,0x8d,0xd4,0x7f,0xf5,0x21,0x39,0x39,0xef,0xf0,0xdb,0xdf,
+ 0xfe,0x96,0x2b,0xaf,0xbc,0x92,0xdc,0xdc,0x5c,0x74,0x3a,0x5d,0xa7,0xe5,0x71,0xb9,
+ 0x5c,0xac,0x5d,0xbb,0x96,0x37,0xde,0x78,0x83,0x77,0xdf,0x7d,0x97,0x86,0x86,0x86,
+ 0x2e,0xd5,0xc7,0xd8,0x6c,0x13,0xd1,0x51,0xd5,0xa0,0x31,0xb7,0x15,0xff,0xad,0x7,
+ 0x25,0xca,0x11,0xa0,0x58,0xc3,0x76,0xf1,0x42,0x1,0xc4,0x5a,0x65,0xa2,0x78,0x5b,
+ 0x52,0x4d,0x63,0xb5,0xa9,0x5e,0xf1,0x68,0xfe,0x64,0xa8,0x31,0xae,0x1e,0xff,0xd4,
+ 0xf,0xee,0x1e,0xb,0x4,0xb9,0x55,0xcd,0xcc,0xd4,0xf4,0x6a,0x43,0x97,0x99,0xdf,
+ 0x11,0x20,0x54,0x7,0x52,0xd3,0x5e,0x90,0xa3,0x10,0xba,0x24,0x90,0xb4,0x1,0x8c,
+ 0xf,0x11,0x2f,0x50,0x45,0x4b,0xef,0x23,0x90,0x97,0x53,0xcd,0x82,0x29,0x99,0x7c,
+ 0xb0,0x2d,0x9f,0x55,0xab,0x56,0xb1,0x6a,0xd5,0x2a,0x74,0x3a,0x1d,0x3,0x7,0xe,
+ 0x24,0x37,0x37,0x17,0x83,0xc1,0xe0,0x5f,0x76,0xa6,0x79,0x45,0xaf,0x8a,0x8a,0xa,
+ 0xca,0xca,0xca,0x28,0x2a,0x2a,0xea,0x6c,0x62,0x66,0x87,0x94,0x9d,0x60,0xc4,0x6c,
+ 0x72,0x80,0x1c,0xd7,0x32,0x18,0xa4,0x95,0xee,0x6f,0x9,0xf8,0x18,0x5b,0xad,0x48,
+ 0x15,0xbe,0xcf,0x5f,0x7b,0x30,0x4a,0x14,0x6d,0xeb,0x53,0xe3,0xb2,0xe9,0xf6,0xba,
+ 0x1d,0xda,0x3b,0x27,0x3d,0xb8,0xed,0xbf,0xc7,0x64,0x44,0x90,0x4e,0xef,0xf9,0x55,
+ 0x5c,0xaa,0xd5,0x1c,0xbe,0xf1,0xd7,0x85,0x3c,0xc5,0x8a,0xe4,0x6e,0x4,0x4d,0x34,
+ 0x42,0x6e,0x59,0x99,0x4b,0xc2,0xc7,0xf4,0x40,0x30,0x4,0xa8,0x1f,0xbd,0xce,0x4d,
+ 0x72,0x82,0x9d,0xa9,0xb9,0x16,0x3e,0xdb,0xed,0x9d,0x91,0xeb,0x76,0xbb,0xd9,0xb1,
+ 0x63,0x7,0x3b,0x76,0xec,0xe8,0xb6,0x98,0x80,0x49,0x2f,0x63,0xd2,0xb,0x24,0x4,
+ 0xa2,0x75,0x0,0xa8,0xb5,0x14,0x90,0x40,0x48,0xfa,0xe0,0x19,0xce,0x9d,0xa9,0x1,
+ 0x15,0xaa,0x4a,0x2d,0x4a,0xd1,0x8e,0x3e,0x75,0x8a,0x5b,0xf3,0x9d,0xdb,0x2d,0xdf,
+ 0x31,0xe9,0x81,0x1d,0x3f,0x1d,0xd3,0x21,0x61,0x42,0x96,0x1c,0xaa,0x47,0x6e,0xeb,
+ 0xba,0x70,0xb4,0x0,0x21,0x40,0xa9,0x47,0x12,0x56,0x6f,0x58,0x55,0xd6,0x7,0xab,
+ 0x81,0x20,0x49,0x20,0xd1,0x3c,0x7d,0x67,0x50,0x66,0x2d,0x17,0x9d,0x1a,0xef,0x7,
+ 0x40,0x4f,0x50,0x52,0xa4,0xe,0x9d,0xd6,0xed,0x63,0xb2,0xd6,0xb,0x80,0xc0,0x56,
+ 0xdf,0xc6,0x1b,0x90,0xc3,0x6e,0xf5,0x4e,0xbb,0x8e,0xed,0xdf,0xf4,0xab,0x71,0x3b,
+ 0x34,0x1f,0x7a,0x14,0xdd,0x8a,0x49,0x7f,0xde,0x56,0xd8,0x1d,0x65,0xe8,0x32,0x0,
+ 0x94,0x26,0xfd,0x1f,0xf7,0x7c,0x9b,0x36,0x29,0xa9,0x6f,0x7d,0x44,0x4c,0x52,0xa3,
+ 0x39,0x3a,0xce,0x86,0x56,0xaf,0x1c,0xa6,0xd,0xd0,0xd1,0xbd,0xaa,0xb7,0x6f,0x5d,
+ 0x48,0x78,0x17,0x17,0xd5,0x4,0x6c,0xf4,0x18,0x68,0x17,0x78,0x7f,0x1e,0x15,0x69,
+ 0x23,0x27,0x31,0xad,0x47,0xa3,0x82,0xb2,0xec,0x8b,0x3e,0xfb,0xe2,0x1d,0x28,0xae,
+ 0x36,0xad,0xbe,0x79,0x68,0xb7,0xbf,0x49,0x87,0x61,0xfc,0xd5,0x57,0x9b,0xc5,0x9e,
+ 0x4d,0x19,0x55,0x4e,0x97,0x7c,0xc5,0xe4,0x55,0x3b,0x3f,0xed,0xce,0x32,0x74,0x19,
+ 0x0,0x13,0x1e,0xdc,0xba,0xfd,0xe3,0x5b,0x87,0x65,0x29,0xf9,0xf1,0xe7,0x56,0x96,
+ 0x44,0x9f,0x83,0x24,0x4d,0x92,0x25,0x11,0x6d,0x89,0x6f,0x92,0x63,0x92,0x1a,0x2d,
+ 0xd1,0xb1,0x36,0xc9,0x18,0xe1,0x3a,0x8a,0x80,0x10,0x20,0x5c,0x61,0xdd,0xdb,0x49,
+ 0x57,0x80,0xa,0xd4,0x1,0x4e,0xc0,0xe5,0x4b,0xa1,0xbe,0x27,0xe0,0xdd,0xcb,0xc0,
+ 0xdc,0x69,0x87,0x58,0x33,0xf7,0x5,0xbe,0xd6,0xaf,0x86,0x6e,0xf9,0xfe,0xce,0x20,
+ 0x25,0xf8,0xbd,0x43,0x48,0x81,0xd2,0xfc,0x4,0xc7,0x81,0xfc,0xc4,0x12,0xc5,0xc9,
+ 0x8c,0xc9,0xf,0xed,0xdc,0xdf,0xdd,0x20,0x3e,0x2c,0x37,0x70,0xe6,0x83,0x5b,0x9b,
+ 0x80,0xd7,0x7c,0x89,0xcf,0x57,0xe,0x89,0x74,0x96,0xc4,0x8e,0xab,0x29,0x8f,0x9a,
+ 0x2e,0xcb,0xea,0x4c,0x81,0xd4,0x37,0xd2,0x62,0x57,0xe3,0x13,0xac,0x71,0x31,0x89,
+ 0x8d,0xb2,0xd1,0xe4,0xea,0x6,0x9,0x11,0x9c,0xdf,0xd8,0x68,0x62,0x7f,0xb5,0x33,
+ 0xb0,0x4a,0xdf,0x1,0xfe,0xb,0x14,0x2,0x5,0xc0,0x7e,0x1f,0x83,0xc3,0xa5,0x34,
+ 0x1f,0x10,0x6,0xe2,0xdd,0xca,0xbe,0xf9,0x7b,0x56,0x73,0xbd,0x79,0xf9,0xeb,0xd,
+ 0x87,0x4b,0x8a,0x3,0x81,0x1a,0x60,0xf1,0xb7,0x5,0x80,0xa4,0x3a,0xda,0x5,0x80,
+ 0xaa,0xc8,0xfc,0xbc,0x2d,0xbd,0xa1,0xbe,0x3a,0xe2,0xb,0xd5,0x1e,0x73,0xf9,0x84,
+ 0x87,0xbf,0xb1,0xf7,0x84,0x14,0xeb,0x96,0xee,0xb3,0xd7,0x67,0xcd,0xd2,0xa4,0xf4,
+ 0xdd,0x3d,0x42,0xab,0x53,0xce,0x95,0xb4,0xea,0x25,0x92,0x44,0x5a,0x4c,0x6c,0xa3,
+ 0x1c,0x9f,0xd4,0x10,0x63,0xb1,0x34,0xa1,0xd5,0x1d,0x7d,0x95,0xb1,0x2d,0x3f,0x99,
+ 0x5b,0x5f,0x75,0xb0,0x76,0x67,0x9d,0xd,0xef,0x36,0x74,0x1b,0xba,0xa9,0xce,0x74,
+ 0x78,0x37,0x71,0xb8,0x4c,0xa7,0x91,0xae,0xf8,0x60,0x51,0x4e,0xdf,0xe9,0x63,0xf6,
+ 0x82,0x2e,0x2,0xb4,0x11,0xc1,0x62,0xbf,0xb5,0x1a,0x50,0x9a,0x40,0xd8,0xdb,0x5c,
+ 0x77,0x3a,0x74,0xec,0xd8,0xd2,0xaf,0xce,0xe5,0xd2,0xfe,0x79,0xfc,0x7d,0xbb,0x1e,
+ 0xe8,0x49,0x35,0xd6,0x23,0xfd,0xa7,0x9b,0x56,0x8e,0x8a,0x70,0x58,0x5d,0x53,0x74,
+ 0x6,0xcf,0xc5,0x2,0x66,0x1a,0x4d,0x2e,0x63,0x6a,0x7a,0x55,0x5c,0x7c,0xbc,0x55,
+ 0x23,0x4b,0xea,0x11,0xc4,0x11,0xbc,0xc9,0xed,0xd1,0xf2,0xc9,0xa6,0x2c,0x2e,0x7e,
+ 0xb2,0xa0,0xde,0xe9,0x51,0xcf,0x1,0xd6,0xf7,0x54,0x5,0x7e,0x7a,0x4b,0xce,0xce,
+ 0x71,0x83,0x4b,0xf2,0x22,0x4c,0x6e,0xd0,0x47,0xf8,0x7a,0x8e,0x42,0x19,0x82,0x2,
+ 0xd4,0x26,0xef,0x31,0xe0,0x7a,0x7d,0x9d,0x99,0x3d,0x3b,0x32,0xaa,0xdc,0x2e,0xcd,
+ 0x65,0x13,0x57,0xed,0xf8,0x9c,0x1e,0xa6,0x63,0xb2,0x6f,0xe0,0x97,0x4b,0x86,0xe6,
+ 0xe9,0x65,0xcf,0x8d,0x92,0x2c,0xcd,0xb2,0xc4,0x34,0xea,0x52,0x92,0x6b,0xe2,0x2c,
+ 0x51,0x4d,0xc1,0xfa,0xb0,0xb,0x80,0xd8,0xbc,0x27,0x8d,0x7b,0xde,0xb3,0x35,0xbc,
+ 0xbd,0xa5,0x76,0x32,0xf0,0x53,0x4f,0x96,0x65,0xc3,0xd2,0xc1,0xb7,0x66,0x24,0x57,
+ 0xdc,0x97,0x9e,0x54,0xa5,0x43,0x96,0x41,0xd6,0x80,0x2c,0x85,0xf0,0x0,0x3c,0x20,
+ 0xab,0x41,0x12,0xa1,0xbe,0xde,0x2c,0x76,0x6d,0xcf,0x38,0xa8,0x28,0x9a,0xf1,0x13,
+ 0x1f,0xd8,0x51,0x7c,0x2c,0x78,0x71,0x4c,0x37,0x8e,0x14,0x2b,0x91,0x37,0x34,0xd,
+ 0x9d,0xae,0xd1,0xb9,0x17,0x4b,0x92,0x34,0x36,0x31,0xa1,0xce,0x90,0x9c,0x58,0x1b,
+ 0x69,0x32,0x3a,0xc3,0x53,0x3,0xc0,0xee,0xfd,0x49,0x7c,0xbe,0xc3,0x68,0x5b,0xfa,
+ 0x46,0xf1,0x48,0xab,0x8b,0x9f,0x7b,0xba,0xc,0xeb,0xfe,0x70,0x4a,0xb6,0x5e,0x72,
+ 0x6f,0x1a,0x9e,0x5b,0x10,0x6b,0xd0,0xbb,0xdb,0x8a,0xfd,0x76,0xce,0x6b,0x6a,0xa3,
+ 0xc4,0xde,0xdd,0xe9,0xe5,0x8a,0x8b,0x71,0x13,0x1e,0xda,0xb5,0xff,0x58,0xf1,0xe0,
+ 0xb8,0xd9,0x3d,0xfc,0xeb,0x25,0xb9,0x51,0x42,0xe8,0x66,0xe9,0x75,0xca,0x4d,0x1a,
+ 0x8d,0x27,0x3d,0x25,0xa9,0x3a,0x3a,0x29,0xae,0x5e,0xaf,0xd5,0x28,0x21,0x19,0x5f,
+ 0x67,0x35,0xb3,0xbb,0x24,0x41,0xc9,0x3f,0x28,0x15,0x2f,0xfb,0x77,0xed,0xa8,0xe2,
+ 0xfa,0xfa,0xda,0x63,0xf5,0xee,0x1b,0x96,0xe,0x99,0xa9,0xd3,0x78,0x5e,0x1d,0x9e,
+ 0x5b,0x10,0xab,0xd3,0x79,0xda,0x7,0x81,0xc,0x8d,0x4d,0x46,0xa,0xa,0x52,0x6b,
+ 0xec,0x4e,0xc3,0x16,0x45,0x91,0xe7,0x1f,0xab,0x96,0x7f,0xdc,0x1,0x20,0x90,0x3e,
+ 0x5f,0x32,0x2c,0xdd,0x20,0x2b,0xf3,0x64,0x59,0x99,0x7,0x58,0x74,0x1a,0x45,0x35,
+ 0x1a,0x5c,0x92,0xaa,0xca,0xc2,0xe5,0xd6,0x4a,0x6e,0x8f,0x46,0x2b,0x49,0x6c,0x76,
+ 0x2b,0x9a,0x15,0x13,0x1f,0xd8,0xf1,0xf5,0xf1,0xf0,0xce,0xeb,0x6e,0x1b,0x7a,0xae,
+ 0x4e,0xa3,0x3c,0x6f,0x89,0x6c,0x94,0x13,0xe3,0xeb,0x63,0xa3,0xcc,0x36,0xf4,0x7a,
+ 0xf,0xc8,0xe0,0x74,0xeb,0xb0,0xd9,0x8d,0x1c,0xaa,0x8c,0xad,0xaf,0x6f,0x88,0x38,
+ 0xa8,0xa8,0x9a,0xeb,0x8e,0x97,0xf7,0x3e,0x2e,0x1,0xd0,0x9a,0xbe,0xba,0x7d,0x64,
+ 0xa2,0xc6,0xe3,0x4a,0xf3,0x48,0x92,0x53,0xab,0xca,0xd5,0xae,0xc8,0xb8,0x9a,0xae,
+ 0xe,0x7e,0xec,0x11,0xe0,0xae,0x9c,0xaa,0xd5,0xd8,0x6a,0xa6,0xe8,0x65,0xd7,0xd5,
+ 0x92,0xcc,0x68,0x21,0xa4,0x78,0x40,0x2b,0x49,0x6a,0x29,0xf0,0xbd,0x47,0xd1,0xbc,
+ 0x3f,0xe1,0x81,0x9d,0xef,0xd2,0x4b,0xbd,0xd4,0x4b,0xbd,0x74,0x5c,0xd0,0xff,0x3,
+ 0x9b,0xf6,0x95,0x13,0xab,0xdd,0xf2,0x89,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,
+ 0xae,0x42,0x60,0x82,
+
+};
+
+static const unsigned char qt_resource_name[] = {
+ // icons
+ 0x0,0x5,
+ 0x0,0x6f,0xa6,0x53,
+ 0x0,0x69,
+ 0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x73,
+ // resources
+ 0x0,0x9,
+ 0xa,0x6c,0x78,0x43,
+ 0x0,0x72,
+ 0x0,0x65,0x0,0x73,0x0,0x6f,0x0,0x75,0x0,0x72,0x0,0x63,0x0,0x65,0x0,0x73,
+ // fred.png
+ 0x0,0x8,
+ 0x8,0xb7,0x5a,0xe7,
+ 0x0,0x66,
+ 0x0,0x72,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
+
+};
+
+static const unsigned char qt_resource_struct[] = {
+ // :
+ 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,
+ // :/icons
+ 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,
+ // :/icons/resources
+ 0x0,0x0,0x0,0x10,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,
+ // :/icons/resources/fred.png
+ 0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
+
+};
+
+QT_BEGIN_NAMESPACE
+
+extern Q_CORE_EXPORT bool qRegisterResourceData
+ (int, const unsigned char *, const unsigned char *, const unsigned char *);
+
+extern Q_CORE_EXPORT bool qUnregisterResourceData
+ (int, const unsigned char *, const unsigned char *, const unsigned char *);
+
+QT_END_NAMESPACE
+
+
+int QT_MANGLE_NAMESPACE(qInitResources_fred)()
+{
+ QT_PREPEND_NAMESPACE(qRegisterResourceData)
+ (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
+ return 1;
+}
+
+Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_fred))
+
+int QT_MANGLE_NAMESPACE(qCleanupResources_fred)()
+{
+ QT_PREPEND_NAMESPACE(qUnregisterResourceData)
+ (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
+ return 1;
+}
+
+Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_fred))
+
diff --git a/tags/fred-0.1.0alpha1/registrykey.cpp b/tags/fred-0.1.0alpha1/registrykey.cpp
new file mode 100644
index 0000000..f39945d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrykey.cpp
@@ -0,0 +1,54 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "registrykey.h"
+
+RegistryKey::RegistryKey(const QList<QVariant> &data) {
+ this->key_data=data;
+}
+
+RegistryKey::~RegistryKey() {
+ qDeleteAll(this->keys);
+}
+
+void RegistryKey::Append(RegistryKey *p_key) {
+ this->keys.append(p_key);
+}
+
+RegistryKey* RegistryKey::Key(uint64_t row) {
+ return this->keys.value(row);
+}
+
+uint64_t RegistryKey::RowCount() {
+ return this->keys.count();
+}
+
+QVariant RegistryKey::Data(uint64_t column) const {
+ if(column>=0 && column<3) {
+ return this->key_data.value(column);
+ } else {
+ return QVariant();
+ }
+}
+
+uint64_t RegistryKey::Row() const {
+ return this->keys.indexOf(const_cast<RegistryKey*>(this));
+}
+
diff --git a/tags/fred-0.1.0alpha1/registrykey.h b/tags/fred-0.1.0alpha1/registrykey.h
new file mode 100644
index 0000000..a320206
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrykey.h
@@ -0,0 +1,44 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef REGISTRYKEY_H
+#define REGISTRYKEY_H
+
+#include <QList>
+#include <QVariant>
+#include <inttypes.h>
+
+class RegistryKey {
+ public:
+ RegistryKey(const QList<QVariant> &data);
+ ~RegistryKey();
+
+ void Append(RegistryKey *p_key);
+ RegistryKey *Key(uint64_t row);
+ uint64_t RowCount();
+ QVariant Data(uint64_t column) const;
+ uint64_t Row() const;
+
+ private:
+ QList<RegistryKey*> keys;
+ QList<QVariant> key_data;
+};
+
+#endif // REGISTRYKEY_H
diff --git a/tags/fred-0.1.0alpha1/registrykeytablemodel.cpp b/tags/fred-0.1.0alpha1/registrykeytablemodel.cpp
new file mode 100644
index 0000000..8ae5a2a
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrykeytablemodel.cpp
@@ -0,0 +1,308 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "registrykeytablemodel.h"
+
+#include <stdlib.h>
+
+RegistryKeyTableModel::RegistryKeyTableModel(hive_h *hhive,
+ hive_node_h hive_node,
+ QObject *p_parent)
+ : QAbstractTableModel(p_parent)
+{
+ // Create the "root" key. It's values will be used for as header values.
+ this->p_keys=new RegistryKey(QList<QVariant>()<<
+ tr("Key")<<tr("Type")<<tr("Value"));
+ // Build key list
+ this->SetupModelData(hhive,hive_node);
+}
+
+RegistryKeyTableModel::~RegistryKeyTableModel() {
+ delete this->p_keys;
+}
+
+QVariant RegistryKeyTableModel::data(const QModelIndex &index, int role) const {
+ bool ok;
+
+ if(!index.isValid()) return QVariant();
+
+ RegistryKey *p_key=static_cast<RegistryKey*>(index.internalPointer());
+
+ switch(role) {
+ case Qt::DisplayRole: {
+ switch(index.column()) {
+ case RegistryKeyTableModel::ColumnContent_KeyName: {
+ return p_key->Data(index.column());
+ break;
+ }
+ case RegistryKeyTableModel::ColumnContent_KeyType: {
+ int value_type=p_key->Data(index.column()).toInt(&ok);
+ if(!ok) return QVariant();
+ return this->TypeToString(value_type);
+ break;
+ }
+ case RegistryKeyTableModel::ColumnContent_KeyValue: {
+ // Get index to value type
+ QModelIndex type_index=this->index(index.row(),
+ RegistryKeyTableModel::
+ ColumnContent_KeyType);
+ // Get value type
+ int value_type=this->data(type_index,
+ RegistryKeyTableModel::
+ AdditionalRoles_GetRawData).toInt(&ok);
+ if(!ok) return QVariant();
+ // Return value converted to human readeable string
+ QByteArray value_array=p_key->Data(index.column()).toByteArray();
+ return this->ValueToString(value_array,value_type);
+ break;
+ }
+ default:
+ return QVariant();
+ }
+ break;
+ }
+ case RegistryKeyTableModel::AdditionalRoles_GetRawData: {
+ return p_key->Data(index.column());
+ break;
+ }
+ default:
+ return QVariant();
+ }
+
+ /*
+ if(role!=Qt::DisplayRole) return QVariant();
+
+ RegistryKey *p_key=static_cast<RegistryKey*>(index.internalPointer());
+
+ return p_key->Data(index.column());
+ */
+}
+
+Qt::ItemFlags RegistryKeyTableModel::flags(const QModelIndex &index) const {
+ if(!index.isValid()) return 0;
+
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+QVariant RegistryKeyTableModel::headerData(int section,
+ Qt::Orientation orientation,
+ int role) const
+{
+ // Only horizontal header is supported
+ if(orientation!=Qt::Horizontal) return QVariant();
+
+ switch(role) {
+ case Qt::TextAlignmentRole:
+ // Handle text alignment
+ if(section==2) return Qt::AlignLeft;
+ else return Qt::AlignCenter;
+ break;
+ case Qt::DisplayRole:
+ // Header text
+ return this->p_keys->Data(section);
+ break;
+ default:
+ return QVariant();
+ }
+}
+
+QModelIndex RegistryKeyTableModel::index(int row,
+ int column,
+ const QModelIndex &parent) const
+{
+ if(!this->hasIndex(row,column,parent)) return QModelIndex();
+
+ RegistryKey *p_key=this->p_keys->Key(row);
+
+ return this->createIndex(row,column,p_key);
+}
+
+int RegistryKeyTableModel::rowCount(const QModelIndex &parent) const {
+ // According to Qt doc, when parent in TableModel is valid, we should return 0
+ if(parent.isValid()) return 0;
+ // Get and return row count from the keys list
+ return this->p_keys->RowCount();
+}
+
+int RegistryKeyTableModel::columnCount(const QModelIndex &parent) const {
+ // According to Qt doc, when parent in TableModel is valid, we should return 0
+ if(parent.isValid()) return 0;
+ // There are always 3 columns
+ return 3;
+}
+
+void RegistryKeyTableModel::SetupModelData(hive_h *hhive,
+ hive_node_h hive_node)
+{
+ int i=0;
+ RegistryKey *p_key;
+ char *p_key_name;
+ char *key_value;
+ int key_value_type;
+ size_t key_value_len;
+
+ // Get all (key,value) pairs for current node
+ hive_value_h *node_keys=hivex_node_values(hhive,hive_node);
+ if(node_keys==NULL) return;
+
+ // Add all (key,value) pairs to the key list
+ while(node_keys[i]) {
+ // Get key name
+ p_key_name=hivex_value_key(hhive,node_keys[i]);
+ if(p_key_name==NULL) continue;
+ // Get key value and type
+ key_value=hivex_value_value(hhive,
+ node_keys[i],
+ (hive_type*)&key_value_type,
+ &key_value_len);
+ if(key_value==NULL) continue;
+
+ // Add infos to key list
+ p_key=new RegistryKey(QList<QVariant>()<<
+ QString(strlen(p_key_name) ?
+ p_key_name : "(default)")<<
+ QVariant(key_value_type)<<
+ QByteArray(key_value,key_value_len));
+ this->p_keys->Append(p_key);
+ i++;
+ }
+ free(node_keys);
+}
+
+QString RegistryKeyTableModel::ValueToString(QByteArray &value,
+ int value_type) const
+{
+ QString ret="";
+ int i=0;
+
+ #define ToHexStr() { \
+ for(i=0;i<value.size();i++) { \
+ ret.append(QString().sprintf("%02X ",(uint8_t)(value.constData()[i]))); \
+ } \
+ ret.chop(1); \
+ }
+
+ switch(value_type) {
+ case hive_t_REG_NONE:
+ // Just a key without a value, but to be certain...
+ ToHexStr();
+ break;
+ case hive_t_REG_SZ:
+ // A Windows string (encoding is unknown, but often UTF16-LE)
+ // TODO: What happens if encoding is not UTF16-LE ??? Thx Billy!!!
+ ret=value.size() ? QString().fromUtf16((ushort*)(value.constData())) : "";
+ break;
+ case hive_t_REG_EXPAND_SZ:
+ // A Windows string that contains %env% (environment variable expansion)
+ ret=value.size() ? QString().fromUtf16((ushort*)(value.constData())) : "";
+ break;
+ case hive_t_REG_BINARY:
+ // A blob of binary
+ ToHexStr();
+ break;
+ case hive_t_REG_DWORD:
+ // DWORD (32 bit integer), little endian
+ ret=QString().sprintf("0x%08X",*(uint32_t*)value.constData());
+ //ret=QString().sprintf("0x%08X",value.toUInt());
+ break;
+ case hive_t_REG_DWORD_BIG_ENDIAN:
+ // DWORD (32 bit integer), big endian
+ ret=QString().sprintf("0x%08X",*(uint32_t*)value.constData());
+ //ret=QString().sprintf("0x%08X",value.toUInt());
+ break;
+ case hive_t_REG_LINK:
+ // Symbolic link to another part of the registry tree
+ ToHexStr();
+ break;
+ case hive_t_REG_MULTI_SZ:
+ // Multiple Windows strings.
+ // See http://blogs.msdn.com/oldnewthing/archive/2009/10/08/9904646.aspx
+ ToHexStr();
+ break;
+ case hive_t_REG_RESOURCE_LIST:
+ // Resource list
+ ToHexStr();
+ break;
+ case hive_t_REG_FULL_RESOURCE_DESCRIPTOR:
+ // Resource descriptor
+ ToHexStr();
+ break;
+ case hive_t_REG_RESOURCE_REQUIREMENTS_LIST:
+ // Resouce requirements list
+ ToHexStr();
+ break;
+ case hive_t_REG_QWORD:
+ // QWORD (64 bit integer). Usually little endian.
+ ret=QString().sprintf("0x%016X",*(uint64_t*)value.constData());
+ //ret=QString().sprintf("0x%08X",value.toULongLong());
+ break;
+ default:
+ ToHexStr();
+ }
+
+ return ret;
+}
+
+QString RegistryKeyTableModel::TypeToString(int value_type) const {
+ QString ret="";
+
+ switch(value_type) {
+ case hive_t_REG_NONE:
+ ret="REG_NONE";
+ break;
+ case hive_t_REG_SZ:
+ ret="REG_SZ";
+ break;
+ case hive_t_REG_EXPAND_SZ:
+ ret="REG_EXPAND_SZ";
+ break;
+ case hive_t_REG_BINARY:
+ ret="REG_BINARY";
+ break;
+ case hive_t_REG_DWORD:
+ ret="REG_DWORD";
+ break;
+ case hive_t_REG_DWORD_BIG_ENDIAN:
+ ret="REG_DWORD_BIG_ENDIAN";
+ break;
+ case hive_t_REG_LINK:
+ ret="REG_LINK";
+ break;
+ case hive_t_REG_MULTI_SZ:
+ ret="REG_MULTI_SZ";
+ break;
+ case hive_t_REG_RESOURCE_LIST:
+ ret="REG_RESOURCE_LIST";
+ break;
+ case hive_t_REG_FULL_RESOURCE_DESCRIPTOR:
+ ret="REG_FULL_RESOURCE_DESC";
+ break;
+ case hive_t_REG_RESOURCE_REQUIREMENTS_LIST:
+ ret="REG_RESOURCE_REQ_LIST";
+ break;
+ case hive_t_REG_QWORD:
+ ret="REG_QWORD";
+ break;
+ default:
+ ret=QString().sprintf("0x%08X",(uint32_t)value_type);
+ }
+
+ return ret;
+}
diff --git a/tags/fred-0.1.0alpha1/registrykeytablemodel.h b/tags/fred-0.1.0alpha1/registrykeytablemodel.h
new file mode 100644
index 0000000..6c9e37a
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrykeytablemodel.h
@@ -0,0 +1,68 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef REGISTRYKEYTABLEMODEL_H
+#define REGISTRYKEYTABLEMODEL_H
+
+#include <QAbstractTableModel>
+
+#include "registrykey.h"
+
+#include <hivex.h>
+
+class RegistryKeyTableModel : public QAbstractTableModel {
+ Q_OBJECT
+
+ public:
+ enum AdditionalRoles {
+ AdditionalRoles_GetRawData=Qt::UserRole
+ };
+
+ RegistryKeyTableModel(hive_h *hhive,
+ hive_node_h hive_node,
+ QObject *p_parent=0);
+ ~RegistryKeyTableModel();
+
+ QVariant data(const QModelIndex &index, int role) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+ QVariant headerData(int section,
+ Qt::Orientation orientation,
+ int role=Qt::DisplayRole) const;
+ QModelIndex index(int row,
+ int column,
+ const QModelIndex &parent=QModelIndex()) const;
+ int rowCount(const QModelIndex &parent=QModelIndex()) const;
+ int columnCount(const QModelIndex &parent=QModelIndex()) const;
+
+ private:
+ enum ColumnContent {
+ ColumnContent_KeyName=0,
+ ColumnContent_KeyType,
+ ColumnContent_KeyValue
+ };
+
+ RegistryKey *p_keys;
+
+ void SetupModelData(hive_h *hhive, hive_node_h hive_node);
+ QString ValueToString(QByteArray &value, int value_type) const;
+ QString TypeToString(int value_type) const;
+};
+
+#endif // REGISTRYKEYTABLEMODEL_H
diff --git a/tags/fred-0.1.0alpha1/registrynode.cpp b/tags/fred-0.1.0alpha1/registrynode.cpp
new file mode 100644
index 0000000..0ce436d
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrynode.cpp
@@ -0,0 +1,61 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "registrynode.h"
+
+RegistryNode::RegistryNode(const QString name,
+ RegistryNode *p_parent)
+{
+ this->p_parent_node=p_parent;
+ this->node_name=name;
+}
+
+RegistryNode::~RegistryNode() {
+ qDeleteAll(this->child_nodes);
+}
+
+void RegistryNode::AppendChild(RegistryNode *p_child) {
+ this->child_nodes.append(p_child);
+}
+
+RegistryNode* RegistryNode::child(uint64_t row) {
+ return this->child_nodes.value(row);
+}
+
+uint64_t RegistryNode::childCount() const {
+ return this->child_nodes.count();
+}
+
+QString RegistryNode::data() const {
+ return this->node_name;
+}
+
+uint64_t RegistryNode::row() const {
+ if(this->p_parent_node) {
+ return this->p_parent_node->
+ child_nodes.indexOf(const_cast<RegistryNode*>(this));
+ } else {
+ return 0;
+ }
+}
+
+RegistryNode *RegistryNode::parent() {
+ return this->p_parent_node;
+}
diff --git a/tags/fred-0.1.0alpha1/registrynode.h b/tags/fred-0.1.0alpha1/registrynode.h
new file mode 100644
index 0000000..27965d3
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrynode.h
@@ -0,0 +1,47 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef REGISTRYNODE_H
+#define REGISTRYNODE_H
+
+#include <QList>
+#include <QString>
+
+#include <inttypes.h>
+
+class RegistryNode {
+ public:
+ RegistryNode(const QString name, RegistryNode *p_parent=0);
+ ~RegistryNode();
+
+ void AppendChild(RegistryNode *p_child);
+ RegistryNode *child(uint64_t row);
+ uint64_t childCount() const;
+ QString data() const;
+ uint64_t row() const;
+ RegistryNode *parent();
+
+ private:
+ QList<RegistryNode*> child_nodes;
+ QString node_name;
+ RegistryNode *p_parent_node;
+};
+
+#endif // REGISTRYNODE_H
diff --git a/tags/fred-0.1.0alpha1/registrynodetreemodel.cpp b/tags/fred-0.1.0alpha1/registrynodetreemodel.cpp
new file mode 100644
index 0000000..330878c
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrynodetreemodel.cpp
@@ -0,0 +1,141 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#include "registrynodetreemodel.h"
+
+#include <stdlib.h>
+
+RegistryNodeTreeModel::RegistryNodeTreeModel(hive_h *hhive,
+ hive_node_h hive_root_node,
+ QObject *p_parent)
+ : QAbstractItemModel(p_parent)
+{
+ Q_UNUSED(p_parent);
+ this->p_root_node=new RegistryNode("ROOT");
+ this->SetupModelData(hhive,
+ hive_root_node,
+ this->p_root_node);
+}
+
+RegistryNodeTreeModel::~RegistryNodeTreeModel() {
+ delete this->p_root_node;
+}
+
+QVariant RegistryNodeTreeModel::data(const QModelIndex &index, int role) const
+{
+ if(!index.isValid()) return QVariant();
+ if(role!=Qt::DisplayRole) return QVariant();
+
+ RegistryNode *p_node=static_cast<RegistryNode*>(index.internalPointer());
+
+ return p_node->data();
+}
+
+Qt::ItemFlags RegistryNodeTreeModel::flags(const QModelIndex &index) const {
+ if(!index.isValid()) return 0;
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+QVariant RegistryNodeTreeModel::headerData(int section,
+ Qt::Orientation orientation,
+ int role) const
+{
+ Q_UNUSED(section);
+ if(orientation==Qt::Horizontal && role==Qt::DisplayRole) {
+ return QVariant("Registry key folders");
+ } else {
+ return QVariant();
+ }
+}
+
+QModelIndex RegistryNodeTreeModel::index(int row,
+ int column,
+ const QModelIndex &parent) const
+{
+ if(!this->hasIndex(row,column,parent)) return QModelIndex();
+
+ RegistryNode *p_parent_node;
+ if(!parent.isValid()) {
+ p_parent_node=this->p_root_node;
+ } else {
+ p_parent_node=static_cast<RegistryNode*>(parent.internalPointer());
+ }
+
+ RegistryNode *p_child_node=p_parent_node->child(row);
+ if(p_child_node) {
+ return this->createIndex(row,column,p_child_node);
+ } else {
+ return QModelIndex();
+ }
+}
+
+QModelIndex RegistryNodeTreeModel::parent(const QModelIndex &index) const {
+ if(!index.isValid()) return QModelIndex();
+
+ RegistryNode *p_child_node=
+ static_cast<RegistryNode*>(index.internalPointer());
+ RegistryNode *p_parent_node=p_child_node->parent();
+
+ if(p_parent_node==this->p_root_node) {
+ return QModelIndex();
+ } else {
+ return this->createIndex(p_parent_node->row(),0,p_parent_node);
+ }
+}
+
+int RegistryNodeTreeModel::rowCount(const QModelIndex &parent) const {
+ if(parent.column()>0) return 0;
+
+ RegistryNode *p_parent_node;
+ if(!parent.isValid()) {
+ p_parent_node=this->p_root_node;
+ } else {
+ p_parent_node=static_cast<RegistryNode*>(parent.internalPointer());
+ }
+
+ return p_parent_node->childCount();
+}
+
+int RegistryNodeTreeModel::columnCount(const QModelIndex &parent) const {
+ Q_UNUSED(parent);
+ return 1;
+}
+
+void RegistryNodeTreeModel::SetupModelData(hive_h *hhive,
+ hive_node_h hive_node,
+ RegistryNode *p_parent)
+{
+ int i=0;
+ RegistryNode *p_node;
+
+ // Get all sub nodes of current hive node
+ hive_node_h *p_hive_children=hivex_node_children(hhive,hive_node);
+ if(p_hive_children==NULL) return;
+
+ // Recursivly iterate over all sub nodes
+ while(p_hive_children[i]) {
+ p_node=new RegistryNode(QString(hivex_node_name(hhive,p_hive_children[i])),
+ p_parent);
+ p_parent->AppendChild(p_node);
+ this->SetupModelData(hhive,p_hive_children[i],p_node);
+ i++;
+ }
+ free(p_hive_children);
+}
diff --git a/tags/fred-0.1.0alpha1/registrynodetreemodel.h b/tags/fred-0.1.0alpha1/registrynodetreemodel.h
new file mode 100644
index 0000000..b699c2e
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/registrynodetreemodel.h
@@ -0,0 +1,58 @@
+/*******************************************************************************
+* fred Copyright (c) 2011 by Gillen Daniel <gillen.dan@pinguin.lu> *
+* *
+* Forensic Registry EDitor (fred) is a M$ registry hive editor for Linux with *
+* special feautures useful during forensic analysis. *
+* *
+* This program is free software: you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the Free *
+* Software Foundation, either version 3 of the License, or (at your option) *
+* any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but WITHOUT *
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along with *
+* this program. If not, see <http://www.gnu.org/licenses/>. *
+*******************************************************************************/
+
+#ifndef REGISTRYNODETREEMODEL_H
+#define REGISTRYNODETREEMODEL_H
+
+#include <QAbstractItemModel>
+
+#include "registrynode.h"
+
+#include <hivex.h>
+
+class RegistryNodeTreeModel : public QAbstractItemModel {
+ Q_OBJECT
+
+ public:
+ RegistryNodeTreeModel(hive_h *hhive,
+ hive_node_h hive_root_node,
+ QObject *p_parent=0);
+ ~RegistryNodeTreeModel();
+
+ QVariant data(const QModelIndex &index, int role) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+ QVariant headerData(int section,
+ Qt::Orientation orientation,
+ int role=Qt::DisplayRole) const;
+ QModelIndex index(int row,
+ int column,
+ const QModelIndex &parent=QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &index) const;
+ int rowCount(const QModelIndex &parent=QModelIndex()) const;
+ int columnCount(const QModelIndex &parent=QModelIndex()) const;
+
+ private:
+ void SetupModelData(hive_h *hhive,
+ hive_node_h hive_node,
+ RegistryNode *p_parent);
+ RegistryNode *p_root_node;
+};
+
+#endif // REGISTRYNODETREEMODEL_H
diff --git a/tags/fred-0.1.0alpha1/resources/fred.desktop b/tags/fred-0.1.0alpha1/resources/fred.desktop
new file mode 100755
index 0000000..8e16128
--- /dev/null
+++ b/tags/fred-0.1.0alpha1/resources/fred.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=Fred
+Type=Application
+Comment=M$ registry hive editor
+Terminal=false
+Exec=fred
+Icon=fred
+Categories=System;
+StartupNotify=true
diff --git a/tags/fred-0.1.0alpha1/resources/fred.png b/tags/fred-0.1.0alpha1/resources/fred.png
new file mode 100644
index 0000000..6e1124c
Binary files /dev/null and b/tags/fred-0.1.0alpha1/resources/fred.png differ
diff --git a/tags/fred-0.1.0alpha1/resources/regedit.gif b/tags/fred-0.1.0alpha1/resources/regedit.gif
new file mode 100644
index 0000000..e66d4d4
Binary files /dev/null and b/tags/fred-0.1.0alpha1/resources/regedit.gif differ
diff --git a/tags/fred-0.1.0alpha1/resources/tux.png b/tags/fred-0.1.0alpha1/resources/tux.png
new file mode 100644
index 0000000..33294b0
Binary files /dev/null and b/tags/fred-0.1.0alpha1/resources/tux.png differ
diff --git a/tags/fred-0.1.0alpha1/resources/tux.xcf b/tags/fred-0.1.0alpha1/resources/tux.xcf
new file mode 100644
index 0000000..676afc2
Binary files /dev/null and b/tags/fred-0.1.0alpha1/resources/tux.xcf differ
diff --git a/trunk/report_templates/SAM_UserAccounts.fred b/trunk/report_templates/SAM_UserAccounts.fred
index 58a1efa..cab7036 100644
--- a/trunk/report_templates/SAM_UserAccounts.fred
+++ b/trunk/report_templates/SAM_UserAccounts.fred
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<report category="SAM" name="User accounts">
<for path="SAM/Domains/Account/Users/Names/*" vars="fred::node;(default),type">
- <paragraph title="[0]" type="string">
+ <paragraph title="[0]" type="stringvar">
<value name="Last login" key="SAM/Domains/Account/Users/[1]/F" type="win64time" offset="8">
</paragraph>
</for>
</report>

File Metadata

Mime Type
text/x-diff
Expires
Mon, Dec 23, 5:21 AM (1 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1176830
Default Alt Text
(358 KB)

Event Timeline