Edit 14.01.2013:
Version 1.01 hochgeladen.
Folgende Features sind dazugekommen:
- Es können mehere Suchstrings angegeben werden.
Edit 08.02.2013:
Version 1.10 hochgeladen
Auch wenn das Einsatzgebiet dieses Tools recht speziell sein mag, habe ich noch etwas daran weitergearbeitet.
Folgende Features sind dazugekommen:
- Benutzereigenes Hintergrundbild für den Anzeigebereich (jpg oder bmp Format)
- Angabe der zu verwendenden Prefsdatei (Programmparameter 1)
- Angabe eines optionalen "Replace-Laufwerksbuchstabens" (Programmparameter 2)
Aufrufsyntax: PB-USB-Start.exe [Prefsdatei] [optionaler Laufwerksbuchstabe]
Beispiel: PB-USB-Start.exe PB500.prefs J
#################################################################################
PB-USB-Starter:
Ich benutze standardmäßig eine portable PB-Umgebung und habe PureBasic auf zwei Computern installiert, auf denen ich es im /PORTABLEN Modus nutze (Desktop PC und Netbook). Der Installationsort ist in beiden Fällen identisch, so dass ich bislang einfach nur den PB-Programmordner von einem Computer 1:1 auf den anderen kopieren musste, wenn ich in den Programmordnern mal was zugefügt haben sollte (Tools z.B.).
Bei der Installation neuer Versionen oder Betas läuft es genauso. Erstmal auf einem Computer alles installieren & einrichten: Einen neuen Ordner anlegen, PB dort rein installieren, meine Tools kopieren und ggf. anpassen bis alles paßt. Und danach den gesamten, neuen PB-Ordner auf den anderen Rechner kopieren.
Das Läuft ohne Probleme, denn auf beiden Rechner liegt meine PB-Installation unter dem gleichen Verzeichnis und auf dem gleichen Laufwerksbuchstaben.
Dann habe ich mir einen PureBasic USB-Stick einrichten wollen und festgestellt, dass einige Pfade in den PB-Prefs und den Tool-Dateien geändert werden müssen, damit diese auch auf die entsprechenden Verzeichnisse auf dem Stick zeigen. Der USB-Stick hat ja unter Umständen an jedem Rechner einen anderen Laufwerksbuchstaben.
Wie hier im Thread schon angemerkt wurde, könnte man diese Pfade natürlich so erfassen, dass sie relativ arbeiten. Also statt "C:\Dokumente..." einfach nur "..\..\Dokumente..." eingeben, so dass der Pfad immer vom aktuellen Verzeichnis aus aufgelöst wird. Im den meisten Fällen geht das, aber es gibt auch Tools und auch Pfade in den PureBasic-Prefs, die von den jeweiligen Programmen automatisch dort reingeschrieben werden und das leider als absoluter Pfad. Diese Einträge müsste man also bei jedem Einstecken des USB-Sticks manuell anpassen.
Der PB-USB-Starter macht genau das automatisch.
Er ermittelt den aktuellen Laufwerksbuchstaben des USB Sticks, patcht in allen nötigen Prefs-Dateien die absoluten Pfade auf den neuen Laufwerksbuchstaben um und startet im Anschluß die PB-IDE. Danach beendet es sich, so dass nur noch die PB-IDE läuft.
In welchen (Prefs-)Dateien was genau zu patchen ist, das kann man über eine Einstellungsdatei festlegen.
Diese Logik ist also vom Benutzer völlig frei einzurichten.
Anwendung und Einrichtung:
Das Programm PB-USB-Starter.exe kopiert man sich an eine geeignete Stelle auf dem USB Stick. Entweder direkt ins Rootverzeichnis oder unter Programme\ oder PortableApps\ oder was auch immer.
Die nötigen Informationen zum Patchen der Dateipfade und zum Starten der PB-IDE entnimmt das Programm einer eigenen Prefsdatei, die man zuvor einmalig mit einem ASCII-Editor ersetellen muss.
Die Prefsdatei muss sich im selben Verzeichnis befinden wie die PB-USB-Starter.exe. Der Dateiname der Prefsdatei kann als Programmparameter beim Aufruf von PB-USB-Starter.exe angegeben werden.
Beispiel: PB-USB-Starter.exe PureBasic510.prefs
Wird der Dateiname nicht angegeben, dann geht das Prgrammm davon aus, dass die Datei sich im selben Verzeichnis befindet wie die Exe und den gleichen Namen hat (mit suffix = ".prefs"). In dem Fall müsste die Datei also "PB-USB-Starter.prefs" heißen.
Der Aufbau der Prefs-Datei ist folgender:
Code: Alles auswählen
[PureBasic]
Exe = Programme\PureBasic 500 Portable\PureBasic.exe
Param = /PORTABLE
; Dies sind der Dateiname der PureBasic.exe (OHNE Laufwerksbuchstaben!) und die Parameter für den Aufruf
; Diese Exe wird nach dem Patchen der Dateien automatisch gestartet. Der PB-USB-Starter beendet sich danach sofort.
[Search]
1 = :\Programme\PureBasic
2 = :\Dokumente und Einstellungen\
; Nach diesen Strings wird in den zu patchenden Dateien gesucht. Das Zeichen vor diesen gefunden Strings wird gegen den Laufwerksbuchstaben des USB-Sticks ausgetauscht.
[Files]
LastDrive = f:\
; Diesen Buchstaben hatte der USB-Stick das letzte mal
Homepath = Programme\PureBasic 500 Portable\
; Dieser Pfad (OHNE Laufwerksbuchstaben!) ist das Directory von dem aus die nachfolgenden Dateien gesucht werden.
1 = PureBasic.prefs
2 = Tools.prefs
3 = PureTools\PureForm\PureFORM.ini
; Dies sind die Dateien, die vom PB-USB-Starter gepatcht werden
Liegt die Exe z.B. unter "F:\Programme\PureBasic 500 Portable\PureBasic.exe", dann schreibt man lediglich "Programme\PureBasic 500 Portable\PureBasic.exe".
Mit dem Schlüssel "Param" kann ein Parameter angegeben werden, der PureBasic beim Start übergeben wird.
In der Sektion [Search] legt man die Suchstrings zum Auffinden der zu patchenden Pfade fest.
Die Schlüsseleinträge beginnen mit "1" aufwärtszählend.
Der Suchstring MUSS exakt ab dem 2. Zeichen des zu patchenden Pfads beginnen.
Sollen z.B. alle Pfade gepatcht werden die mit "C:\Dokumente und Einstellungen\" beginnen, dann muss dort ":\Dokumente und Einstellungen\" angegeben werden!
Der Grund hierfür ist, das das Programm genau das eine Zeichen VOR dieser Zeichenkette mit dem neuen Laufwerksbuchstaben patcht. Es wird also z.B. das C gegen ein F getauscht. Würde man "C:\Dokumente und Einstellungen\" angeben, dann sähe der String nacher so aus: "FC:\Dokumente und Einstellungen\". Außerdem wäre das letzte Zeichen der davor liegenden Zeichenkette überschrieben worden.
Das Programm bearbeitet die Dateien übrigens im Binärmodus. Evtl. enthaltene binäre Daten werden unangetastet gelassen. Es muss also nicht zwingend eine reine Textdatei sein, die gepatcht werden soll.
Die Sektion [Files] enthält die Pfade und Namen der zu patchenden Dateien.
Mit dem Schlüssel "Homepath" gibt man den übergeordneten Ordner an, unter dem die Dateien zu finden sind. Dies ist normalerweise der PureBasic Programmordner (z.B. Programme\PureBasic 500 Portable\). Auch hier ist wieder zu beachten, dass der führende Laufwerksbuchstabe nicht mit angegeben werden darf. Es darf also nicht "C:\Programme\PureBasic 500 Portable\" heißen. Der Laufwerksbuchstabe des USB Sticks kann jedes mal anders lauten. Er wird vom Programm automatisch davorgesetzt.
Die Dateien selbst legt man mit den Schlüsseleinträgen beginnen mit "1" fest.
Liegt die Datei direkt im "Homepath", dann wird nur der Dateiname angegeben, liegt sie darunter, dann wird der Teilpfad ausgehend vom "Homepath" mit angegeben.
Beispiel:
1 = PureBasic.prefs
2 = PureTools\PureForm\PureFORM.ini
Screenshots:
Hier noch ein paar Screensshots von meiner Installation.
Ich habe mir mehrere PB Versionen auf den USB Stick gelegt und demzufolge auch mehrere Prefsdateien für den PB-USB-Starter.
Außerdem setzte ich das Tool "PStart" von PEGTOP Software ein in dem ich die verschiedenen Aufrufe des PB-USB-Starters konfiguriert habe.
Projekt im Bin2Post-Format:
Und hier ist das Projekt zu finden. Die Dateien wurden von mir in ein ZIP-Archiv gepackt und diese Datei in das Bin2Post Format gewandelt.
Wenn ihr den nachfolgenden Code in Euren PureBasic-Editor kopiert und ausführt, werdet ihr nach einem Speicherort gefragt. Nach einem Klick auf OK im Save-Requester erzeugt der Code mein ursprüngliches ZIP-Archiv mit dem gesamten PB-USB-Starter-Projekt (inkl. Icons und Hintergrundbild).
Code: Alles auswählen
;************************************************************************************************
;* Bin2Post by Kurzer - A file generator/converter for sharing binary files in textbased forums.
;* (see here for more information http://www.purebasic.fr/german/viewtopic.php?f=11&t=26298)
;* Filename: PB-USB-Starter.zip - Filesize: 17056
;* Copy & paste this code into your PureBasic IDE and run it (PB Version 4.31+ is needed).
;* You'll be asked for a filename. After choosing the filename the binary file will be generated.
;************************************************************************************************
Macro D:Data.s:EndMacro:*PR=?S:*PW=*PR:Repeat:SL.i=MemoryStringLength(*PR):PokeS(*PW,PeekS(*PR)):
*PW+SL:*PR+SL+1:Until *PR>=?E:IS.i=MemoryStringLength(?S):*PR=AllocateMemory(IS):If *PR>0:
OS.i=Base64Decoder(?S,IS,*PR,IS):F.s=SaveFileRequester("Datei speichern","PB-USB-Starter.zip","Alle Dateien (*.*)|*.*",0)
If F<>"":If CreateFile(0,F):WriteData(0,*PR,OS):CloseFile(0):EndIf:EndIf:FreeMemory(*PR):EndIf:End
DataSection
S:
D "UEsDBBQAAgAAABFGPkIAAAAAAAAAAAAAAAAPAAAAUEItVVNCLVN0YXJ0ZXIvUEsDBBQAAgAIACg/SEJUvZ99AQEAAJ8BAAAhAAAAUEItVVNCLV"
D "N0YXJ0ZXIvUEItVVNCLVN0YXJ0LnByZWZzjVC7bsMwDNwF6B/4BWlaoEuKDjXiooOBCnW6NO6gyLQt+KFApJJ8fhmnr6FDF+nIE6m725oUMbPk"
D "3btW+QnhHkwMbbTjiNU3B7fLJZgQ2e6GX+0FnlArY+W1zF2Z55fNQ1bkWm1LtNF1svIO1pbgDb3rcIJDiFB7JIEtNmmqBXxyPTJLdfSxFq4VeC"
D "YLm5ojxp52yXUk3899gtcyg5K96wlsohZZTtexFI3wI5hMlkRbo1wyFhl5Xr3Q6lqkrqo/TGp1M1Pr0KcRJ0YQgZD7iRiHIU2iqRJrj35AEmdP"
D "YcS95e4/iWlVWOJ19IdzwM2qusj4CXIfsaGLgE0IA301PgBQSwMEFAACAAgAiZFIQm3CQPGBDAAA8SYAACQAAABQQi1VU0ItU3RhcnRlci9QQi"
D "1VU0ItU3RhcnRfUEI0MzEucGK1GmuT2kbyM6nKfxizqbOIWR3sxil7fXbCQ7AkLFAIey+2U5RAA2gREjcj7atS91fvX9ynfLjumZE0EtqN62pN"
D "sSBmerp7+jXdPfvm+6d6ffvNG/FHJu3j93b72I4cFpHFHfk1ZveUJdNPT46Fa+bsAmdHiXyd5VgQQD3PpxrEAZC5X6Rw0d0+B3fheAH5hJ91Mg"
D "iWfuzSFYDVSdeJHHz6Xedj5wVr4jvB2kQSMaMLh3tL8oN52nwh4Drhbg+LiMMzEpde4IY3nFi3VMB8oIx7YUB0NppmsyEmgazGn5xsvDIbJ+ZJ"
D "o3kqQFpxFLICSKYGcvw0L4Grbdmd86k1aL8f9c9SpZimmT4/JbVzj8POPCoogUgaDXJMGPVJs2E2QEKnckJ7WYyDuJRAk1VNWOW4Lmn+8NAqTr"
D "b/DQIakCAOyI5uKKPEjpcbHjFQMCdgEi5lxKbbCBX1yaYOW25+F4OTqdWzj1FNHgFDoGu6AEQ3lLk0MBULzYZiQWquhAVQtEfJfUyuKbuhgYtv"
D "MDK6AlaCJVX4t04QEMfnhOI+WWqFewc+KY78uaBMcmAEMRPW46Er1MwiRQJ2yFzCgWzgLTdRtrROXKRzk0wjwU9grIjnd3MPTCEDN+BINDrEiv"
D "tAxrkrWN7FnAOW5QaFeEVduiM9x/eJtyOc+sgoaOueAkDgcbIAZ8PNA3FKXPgDsuahrFrAUbhHXTg+ZXVyf0O9cnkIiYEIyNCJV6CULV8IvToL"
D "eqCtutAnzEURPHHibKOY+hBKCEaOLvOucRBIfwjZGhGsaRBH95GQVAmXFpC19w7f8CWjgEXwEgfIFm5tRm8jJ+YKk0/XUWI1QoZtzz+QYKnMkG"
D "kQUyq7OvkRHOWWnMDnxLsFd1mz8D+w0kPq7qHGUN4K7wjElhM+2Tg4vvMilCIoz1zs9iREmubVfg1eslp5t8RoX0zk6C+T/nEv3DlR7WucAaRN"
D "Pb73qBKNcJBAeAhHl4I3+YRhuI1hGCO12MPb1DDo53SWvET5hAxMwdeGTSqiMpmgCcHKv0/G01mrPbQEbuX4+PwGnIuTj6gFENB1KJTK4XFNV7"
D "GwYTW3pVFElTuhwQVC4If2GAijA1MjduQtt2BqYBwUTQS9E8AJOs+kDUiY46LN8Ej4YGp/pAkMn30u2SxOnojJbriNQccQJYFJNFEIJL4fgysE"
D "n8UW8VDkYofn4Y7unWjzJfJD+KHDI+ElsKB39jlhKBOtCB0JK7Mw9Hk2dKogxbCg0gvZTj6MpxemF3hPa0xPbprqqEc7YHQZYbR4ao6tAIVt3e"
D "59b+lFX2EPfT9cOD65dpiHlJ58Awo/H+ycNcVgY/I64bONxzHQ43NqLQcDwiPFEBrmBAxTzqeHJBe/pYvKk9vkGUlhmUP0RSbgUmvVxsDklvRg"
D "EJSqIboyvTrx2izmGxNMsgtB2WFMpwp8GK9f176CesANl9QFgTy5YlLMpOW6w3BtBRG7MzieUSaHrVTgDTN9x4WQNIjozmjUyXETlQcgCGBDyn"
D "JBOQfFzg0F1zUatTo5si7mdmc6Hg7rR3Z73h7PZuOLOmkotJcbTJBlUmxdQ2gyapgkUzyqKmjzbsqcxqcp8uck0zcQF8xF4HjURaZ2e9QZ4hc/"
D "ILrAUbykxsvmCcL2aXQRurEvMKAhznFDPwvYuoKRKCW5KY1iFkjEj7LlEUAtTMimbBQaebvLs+kDiOf4o9D0gb8G6gEZ+xD6EKIHwQoCoINJzj"
D "yHBSQn3j+ny5ORhhJqkesUUMYQnfE861O691FIyubrpMWYc1dm303Q62Nb4xd0F7I7O3VDbc5D7EMarMGD0ZckkDYw3gIvb8nRjMVQeEmHQ1/T"
D "cHwv8UstaQjx6IEftnevdqEUOVjpZMk70iAtOP+KO4N9kX+8I9UqLKkoGoCy5fvhEjIOOWBomBB9RRcEQA/pKiporCng8A8YGe9pgBjQ4lIexc"
D "yUOi7WmTijqNdJkVql0vFDTiUGNSI/IXwRFFwTDlfy+rUcrOQiIsy+7zicGgc792oKFzJSXFOtgku2GXW28A0WNFgp2JzyxN4DI7c4Qaq+kMUr"
D "NHZkUdfIcd4OFHglZ0cp8xNKt7aR6OcFuSpYUboVsZcCihx7CVxlEm5pW0cJHEF4a/FlTpUZZl0KI4iB5Er+EM+erhbgoQOii2hO6UCjagb0pp"
D "pgvGRQw3yB9kvUX+lC/aDwaxZVqUxFdMzGU6I5y6tYPqeJQsdbdD2o0ZKhbKMZ2AFUCpQ+9KDmUf6iNoPEEhQFBMmqkuAFkCUB98mPVuz4PPWh"
D "+p7TXyZWXyQ7XbrE+siQaQFpmlhhUFmkvs3qdFHN6W0AKAu0DOfbb/R8J0vMJ0nBK0wCEmxTq49JOouU0JZ9FZaQGMVs8h7qO6xsAxrDkAYDVa"
D "WqcUVpSnjo+8BEMVHKPLPIT7Mmdox+eLAoibQwKeJGEQBiMZQKZyUrwYzPPle1WITB01tvokMkGHwFJQFfikrHpL5gjyorha0VEg3cS14LYhdv"
D "MGeBKh/rbNEAwW4h2Ze2JbTWQwxyVR2XtedHpKo6LbI0QsQFYvJ4UdzVpeTUrxoELfwNSYR1C0UndsFAFRl4DSFAHhgGJgq/cskCFUCBKXZ+Na"
D "zjOWvMpJVm9E/DobIZPCplZohB8WjSng/WQcho/vnHBkye4EdVb/NSVpVwEsPcFm2YDha/jLp/aDPtEJTAhpC91oQiexTLYrbxEHTNsFLmNLqn"
D "gbS0URiRYei4Ys8ioGe7R8le7dcyqj8GtNjtBZBmwQOugMViWWOAOOXhAdoAZgIxODcEoMivBaxNo47vcD4Mg/XckLtKsu9+Zzg/b0/brc6v/e"
D "n4/aiblC+1JExrVBNuRAviLhO91EjFcr0oZDK7F8Pq7+UrfHildCSh5pjNjANfxH2URC8MxKJqC7PRqlyJ8DgBOvBdWUdEEn8Cjt/pTv+iyrBm"
D "s9a0b8261odBx4LBUez7dXXO1Ai4KGj6hjl7bO551x4astjYGzJjTsDBQ2lwnySMQkpKvFIUUr55uv3L4dz6pz37bQgE+18IWSN/I8a/jy5tGJ"
D "h3hgNrNLO6fRj+g6jB2bQ1sietKcwg4xITiVIuI7JzsL2U428S8gLRRv59ZF9O5vb5+PJyMOqOL5EcjozGH8fTrjXNftuDj1b262L8If3Vm7Yu"
D "rM55a9S3uonxSZKd0A9Z4qhyaN52llsxXiff9fBl/fWaHgOV5xb19Nzh69JriJdYpJfCVbRg1ciV/fKkz3dGnlcxMB64N1nc35gEgoGYPxr2vt"
D "M8TNbTGXqtEyc752ekWgi3GhJpoBgdtXlDB04Ljmysz8J4b1TThoqMUbmOC0Qb9NpsjcyaDTyUwGGrxSVJl7R8kZjNlpVyI5NxCZAUB3r9clCn"
D "XNUeogdfMJuSQwmVr5blXaUiCpp8+qql8qXsiu6okkKhg0QelEMKqIkw6WE9uCjpvmprysrM9JQ9TWWs4+b5VCedKtN8EVafFgaLKQ6mKw9eqE"
D "AGOTm8ivpJ1b0P5HhvySlJ9FXonRwCv8M2iSqq1Dkwpf+KKR7XRrUFfgkO9AxlZnGZW2UJ7hdxnWZmZuK06M42pL0iWy5ZL72/LK98jp35rY9X"
D "N+rayAd+yepPeQFkMUwqgN/sIkkk2T/plA28Zcia7kkqKa8T8F4SLx3UnVoSl9S9QJ1AzFB5O14GIs3JCq8OcJN7SBeimsqQiqKc/0b5KETdPD"
D "SbNBfyNnkghoP6Mh/0UglAVQdSelSUQpk3HgU1sHhFg2f5/z1ILkO8HYGBwHWYuwvdmJt68BUslxQvSUTAQtq5M06SE6C8+s2fC8oiHmWe3no8"
D "gmwjkjr6P1l/jPMi44cFufLCrD2WxAJU8/GJWFUWgSuyc5CRSn5/URAWHRixIO2raSiyUPVCQmUtqEIbT7Tskt5Lrket9zsqWt8n18ysHx4FhQ"
D "5mLWsFPRL0s07N42G+FLPmBkVH4AQMRESoHt34ou4Ga2gDwwu82pb/fyD/CUDZmermPMdrwhVkMQzCV/CsWtqf0p41HrLjr/T8yxmO6DnpuUZ6"
D "2uhlb0l0vA5ZWambRTRp/IGyzkdMPGcT+tmknQq6UJMImpFSV7DK3c4SWeWsKXcmwmqVheUSHrVuGgcqHOeXHVxa1fPVdI73Ws59X6buWx5s8B"
D "8DdCsocvucbMMAL3cLR4E6BlLzEOSIcfpwuEgYOCB/kKgWSfqOm/0DjCRYIKd1+7D8lIUeTggrS4pOrXOfFmKyzzleXNFlNDeyMjbDmKbXFt4f"
D "/Q9QSwMEFAACAAgAMpJIQiw8gkrzAAAADgIAABoAAABQQi1VU0ItU3RhcnRlci9wcm9qZWN0LmNmZ6WQwWrDMBBE74H8g47tQcLCjlsKvThOIF"
D "CowJge0hAUeQkCWzIrmbh/X0n0kEChLb1Jw5vdndmLirZNRRsv0bPxdFguCNnVG/I6em2NI89ETAiVdFqRFcsycvemTWcvjlAyP5b3kV9P6CwK"
D "63T0BEteRnlr+06bc/hTSqPQOtipBNTSg3m/3g3ItLKR2sygJi9PPQRw+xSoFc+ODGZIu0Qb5CI97TDqHho7oYJaIyhv8SONMNEeBq1DBC+NXy"
D "7218uOoipy/lPcguX8V3F5yVNejc6/aBPvfihuG7hQ+r8S0J5RDgPc8N+XMkjTfZ3xx5o+AVBLAwQUAAIAAAARRj5CAAAAAAAAAAAAAAAAFQAA"
D "AFBCLVVTQi1TdGFydGVyL0RhdGVuL1BLAwQUAAIACAAgTStCGvBaoaUDAAB+BgAAJwAAAFBCLVVTQi1TdGFydGVyL0RhdGVuL1BCLVVTQi1TdG"
D "FydGVyLmljb4VUXWgcVRQ++9MdtDGzF3ZcMZiVKFhLSNesD/uUnegsqUQyHciwDysyT9dFCM3aHQMuNCuUpgVtxafmVZoKbSmKu4w4aMO+CDLU"
D "PgVfgttGKUJwZ5NoIwm9ntndmZ1dA96Zez7mu98559575l6AAD7JZBRtGAoRgGcB4AT2JHYNu8O7Tev2aPd7aOgFOHnnInxx4wYcBsOQePcteO"
D "1+FdKpb0C+vQL5M5/D5fdvwZXtX+Gdze+huWtDevZbeK90Dp5LnoSUv02+lBpoE23bCA3yjV3HHt8d5F9OoJnK/ofPXH8TjerwU7afr/3j8rzo"
D "46dmo6lUwOEb2btuziCag/lQ6hjy6VbeTZKs4sBxRU631LkUE6pb7mpGEiHko5WsKidbaswL/qgmbgVqMRAUkRfyodRvUmfd6bxih2vEJqrYUu"
D "cfMkHtOhyrxXiVyISIRDgTFsxz7fCY2VRkgUwTIhGVF8wP2uIKD82nv44RoqgqISSbH+1OZ2ZNxihC3vzulkKU/F13sydba/it3mFszzTVWtCb"
D "Z3p2TTWrElGIdNNc3OrtzqmPzC+nhXlphPy1xvvrF74pkSpQIDGxrwRJnvwQWaB0OCb2lTLZGpEXNjeo9rvU9yfwJIHyzbbDrl8+LdKNX+inVC"
D "MJX6CrpdEIqgvPbGgtyVfeMIlSer+wWlmgHBG9BaQfz/xNKb22ei1CtZjsBUo+iEcoLVwuXLpItQejwy7fJAlKtdVLT61+Rmlr2kuwt/ThggZs"
D "TrY16iRwee58VJvRdSIslWx6lkTdjeYW93SsCCniK54tLW95vBnPxZWiM5ZrNnt8dSmXw4oJpJjDGn/lxrlgCLoezynFolLUhblFryxGTtV1IY"
D "4OOUXIyt5PXi7r5Y6Lri/lvA2dPDBNw8AUSOp6qbfRVwxZKuMAjpjmad9p+fOnV/bKNV03JDbnL/CQZdUfG4Yhjd3+2V/HodMT1vWyWhqvn+rj"
D "P3kRtuuz+bctgD5+os6GrefN8Xv8Th//uvXqWH3m/Pg6257oO9c7lvXH2NgblmUNHPkLV51TvDPeTB3VMsyVM8YeMQbADtmPHVzuYmaljU8SK/"
D "tt5FfsDnLriIcZjvsY8QkfDAUc5CAYcsYDAByHWMHLkUdcR0wAHDQQMwC2c2mibt+5Vx0/xLYf6jnW0fMOoj7h4H4P27zd1TV6+lAXA904Ljp5"
D "GByBy/+Dfn1lIK6bz81v9+Z1JLrzPuyug/GNTBvZ/jLiv1BLAwQUAAIACACidEhCCDvmwagsAAAKLQAAMAAAAFBCLVVTQi1TdGFydGVyL0RhdG"
D "VuL1BCLVVTQi1TdGFydC1Mb2Fkc2NyZWVuLmpwZ5V6ZVQcTdP24u7usou7wwLBZXEJ7izusEgI7s7iDsElwSWB3FhwWZxgIRDcQ9AAIfBxP6+c"
D "8/78euacPtXV1V3TXdVX1cw8rzz/ABCqKUOUAUhISADrlwvw/A2gAEBHRUNHQ0VHR0PHwEDHxCbExsbCwibFJ8AlpCClpKQgJSenpmNhoKYB0p"
D "KTM3IzAlnZODg5qBh4+HnY+VnYOdj/HQQJAwMDGxObBBubhJ2anJr9/7s89wOIMAFjyMYoSMwAZCIkFCKk5yEADQCAjPKvtv9bUFABSMgvmr4w"
D "pQkByMhIyKioKGgYKKjIKIAXDoAIhUkAlVhOl4TZxlswIh2NVK+sRUhYXt8nYw4dFgm0Lf+ydaEArXgRp0IC/N+h/5VHQUV7YTETvbQj/2fm/+"
D "mBhExEzIQioCtHYkPK7P28BsBFeelChEIEkAHcGaMWs0ZKrJodiUTdfqDFOXRs27lAVB/brbP82JWEhp0JPuLWuGn/rfZtWaGhHJDxotSUiX4Q"
D "3gnZFLv0CXPO/uHwZKh9JtRLw6BsnzXd84XwieTowgufOyrY45VeIv937Xl/H3CaLGnQEAwvgIH9GXDwToU4uOFOe15Lf+Uv0+m1kGl6x+BTcG"
D "hO4twZL9zJR7K+0YRikO1wR65iZVylXRzg6XMdd/FOOyH0pT9rrBjzgEiQQqSkwjZC54jzDdtCnppC+jMAJwT0a/OX2LyvluzIqmI182ON1twz"
D "YOZV0708Pbl2/yYEX4ymIgS4NXrBM8Hyllh6+0VNKyICvGcASgjLnYkMSgiwMv3bnmjTCcUvzYEBFHz9j2JPC2xRufeef6v9BNK0OnAJ6Qp6tp"
D "84FpJ+7D2ZPQOcM79MPtY8LUhav0U5ZsmQfEyWSUCYA1OWfW1+sqDCWj/N+3dWorkpLeQcDt7N1HyZ2vUc2IRIiT3iXRfDUjCbF4CUPTIv6xH3"
D "EDYtoUTr0XCdPfEdPu8nuANws0WgFm7P/tDPuhX0KRk9osyyewYI/kCjHzGgnx1Sqw0TXiGD6HSwcZujR1WsqUmXgQCZFESlh7cZcCftQMvZbV"
D "N8VbWuDKYhIVBXqxse0xAGaI5Yl3CbKsPFQMkbO0Mtgwc1dyKIobJjQyjZgvIaB9fDX/kBstX3w7PysJR/vSbXyUniFc0T+kub3b/6+mlDqtWN"
D "nZyH/7PGVjGZ957XQo15o8JuXrtol+f1MLq4d5Y0kpustA1m8yR6TydDYUC+W6oTbxtx78uUFZPcOKwxp0zHQNjoqxq/XQK8Is+4lyePKPjzjm"
D "SC5ud9l9Zo2on051/mZ1VIm+31/UIxBo6HWJ2d6g9mTUS/LYH3VGHNiDuJsJxnwJpj5/iXrvJd8lMw5kctzIYWS13vGXqxa59AAhSxy9Yw58z+"
D "/+yKtLKG9VvMf/D6iTZJ39XwrhP8s/+vnQqGfJO59HkG2BSfxQxwCRCL00zTUsXetRLc5Uvh9k2EnQnNFQUjPFD4cUq79Ec5A8VVyOV6xf57aU"
D "4Sn5j4h+gLlILfGq5HlVWANqzW+m6oWB26GTqMD9FZBqkRfTLzr3yo56s3JGu90ZBFaoPtviN5W0NiRhDCXZUNIFF+8qVjKKuoFc8J3iBxQOFk"
D "8ka0WonWSNGBcp9JehQw9emqtHboGBUGeI18EUWHWJf5zP/dL+rXhGjpjNZRTG22zWWCt7FX0p6MLumlm4RsHWkYWMAtScVzAuztOgs3lsqDbz"
D "3I77XNCXGWmWDmMcYnDiMJo44JfknVFV7JwR0T41ZLzP7QxU4FkK4eEKBG4dEwUCcWTO/MVmlHCV7/RxMXIUqCQiWp/mtsXUl/wbloY1fzlaYY"
D "xhpqisuxfqRk0BDaRYQpCIGMX7qOJTiblDhfnfa7UPjtcFf/en5jEDkl5UczS0OQpxdt5e/knQmMofeDS9o8t0lr/uZQITaqrrnReP4FEwYG3m"
D "1qGliwtEMqJ9E5+m0FRiadB6dmwuorrXlS6Qo0pKWbPPbvU5C5Q+Q20GvpZuq5PFsCOTxCZTs8G/AZG9+bzpiIyYu6PWnF6v4vOGW4UbVH51xp"
D "1xn3/okDs37VC+o13XM6/uCx4xO5L9dJcik/1Xm6V0a0Wrucq5wadOQVi2LpCOmbx+PpkklaS7CYh6IoQg5kd8qqFyDxxKKZ1qssX1qSawgmjW"
D "g0QMScpNa2csjEeFmK6GJwCsHBVAp3/HIafGzWP/JfWi3p6KpjiaEng+trtlcGkLnTEl6SvOkagv4cTkgz6iZO9EfTJvYNhqSpiV56MEq94fdj"
D "slI7N0rfMMni/iPisPaBzRg49S0rAoN0sCgSLy9HUb+BkPmfTzoHDZ+5bpdeexiNwrNuUN6cY91+wsium2U61rgywS4WyYybXrm0YmccTO4h+y"
D "g9LTJ04qTw9px0uwUmjTWwFToXbKLwge6GDrOkIm4SHq/lR/o2UoQ4aODUxf4bPDcSfJl0E+/QL+C+HzamDSlkx54AoB7B0ofZMTT3n6R+Wk6P"
D "cuTm3KeoVk/xRpLNCh3VnWMWCegGYpot4rdptAcr+GMyzzTJagSk83l7BerUrRDoA0HejIMWmhoFv+Mm42/4pZo3tivg725XZWqfWiHvbu//rT"
D "U4muIo8kPDKm1yLWel2M5xbH//BXpgfTZ5MzUYjof/q/Ny+UJW3DWfQjjdvP2Qj3RCuVwInojX25bWWy0UXbti8jubcY/O7+rwn4Gd0YKTrPyp"
D "0bzGReCbu9MsDOmBCbEwghIGoQZTOIy/z9He8xnAKnQlsw3w5tWqJnS0Fo5tpRkv2nR01G/2PEpw2Gpl/2oeXKNyrrmRHJXgP3tCu3lc1QiEer"
D "y/YsMCbrkWL2Nvr/MdkY4dfkZjMNFvO5uk5Xq39ZBPgKu8c0QLReBxY3Ch7wPS18x5DHZ+5CV13PI/A7zpDh/UzOuViPRddoNNR1eyq35cr0+V"
D "YMZ0LM8fm+42xlKJp7oD2PbYAhV2tX/uP5HfD/DhcxmkAmi8+v/INxK71ptP2qlgzPyajZgc6GXSAhRr5HUpxybrg4WcRk9IJ6EehvbSyiVpaK"
D "5QMJWX+HzTGlKnP9uvPwkqHEYssTVO7EtaNJzw2NFKhoi0s5SnDLe7gOYqF5E4Sob36T9ZijTQK46Zv5Lz5xO4xhrpXxhHfZiP/gdgIE8eh6uT"
D "aK1SuTJR7+ZM7ANGZuH6o5714EfqbF3f6Aem7GXut+Jo0nQ4pRsybP1gNyJXXSGwJXI4vzQ19607Bq7Lild3AY5CfA6SFRUBh0MpL1s/JrvQ+t"
D "iTK9FvG1ZJjwqXdtmoXbccA/P5s8Q6s/7xzxz6+HpHf6lUkA04V3Hq4UvAhYJA72mP9GAw00cwedOwqdwpZtfOjhphnob6iDJN/rqvXCmOSoUP"
D "sfQyGTJlEh0ypQLlhxWTILyvRigoOW26wZKadwGEelV1ZbRb4toUmoU19aM48CllGTgNCxkZa4zNwHgGfKhnxwXJdI8CY2JNoDloAOmECL+r5R"
D "INGwWP1RydLVsWJOsD46/dJwAiy4IhPbS8Ankab1boncauuoSZkJ11fUSwR6OLE+L3AZH+QlXZ7oAEe3ULbszm8lE+TgHRIRKiiaqEMnB+Tjiw"
D "fgRDg62QEe9ItE2/cvKfb4neAiCkn9qQGLzgOkX8lieB2OCYbOe3mB9McZCddy5+euQEuhzZISWGr2jVPISljAk1SsWNDXxY8km/jxJCCcJcxl"
D "7OpJ5rdiM7PwFK8CmlNCme7s0wx6A0uNhKtNwn2FJsUCTscKxA9bRNprZ96ALXcQ6ZdkY+pXtmI9VbCfpGzo8//pCyp+bJo+0qZKIopeN1dsit"
D "SMjNOiwtOTChYYJNI/B8E+Iuj5raGW1J3VglBre/EQYQ4sfd2Wj3TFo5Uy75Ox+0Jc6kha2HmbBcWHXvP7U9jLNmdIZ949N8Bqgu5DRxdJbw0C"
D "qY1DXB54bpg5Z296S3JPKQoIE20wsKs+YFjzrxEgECyebgzyfdy+tjN4RZTvwTYtEjE1qxW5kRuCLWTBd/i9B/2rv5ZN4UiXKprtqS6vA/igEq"
D "XTPi2iVD3sX2ubzM0+h1b3tAu1xWrtgyRFTDtkdv1XoX1HqPdc0oT9B6Udwq7S+CU8IyESpBBbMaYN5L8OR/PChnsAdiu4ekyNr/wdJ6/7OPK+"
D "kBeg1L9SDjK3W57vzm5Z+z6EBxOjoEwfM7IkCMdSA0PgQcp77JFDcQ3jBiTm9Jvk/4zLYHU8CC2mA+AxLgzl3yUOooRbEJMh3LmLjOlCbs3cPk"
D "kBSFGgwoIrl3f7tX1azqF4+Th2jnF5QsVxw4QVwp6iKfDO9+RN5eyV+s0PCVtV466fL7Fnp9SFMtPG7ZEKSqJdSTeUWkUW/ERnZxpBlv1G4khn"
D "vyHsb+VHeYyu0WSvGA+IRb6ey3MlmisHvldH9BA3ocOvplEquMwrzTu6vQt/rlRk5H4XSeILv2ltlgkuaBVf9mcaxTmU+U273GeXCHJG5MVcnu"
D "3jjl7/cF5TaON67LYYGU4/DjRn0LCZTTK/MvEVYKQpmnS+CKOum81yd9mB7DcCclHfTKd95cGQ4G+zCvQAG4YIp/rdSbBBfx0xlDXcpgZqxmaN"
D "iPinUVIcN1D1pSah7lLOM7pYf4ze83l++ySMp0FRcNbyNTs9zY+xS4IyeQaN7KC6ZtkmdwVMxbiuo6O4x+10iCt3uldwKmAjHpTbPDBj5Z43oo"
D "j5RuUh1XBtdAApE3ylGAHSWGIsd2P6sm32KYCJyXxYVSfe8uZbjHgkYikhA66Ydy8KzIT8nvtgHxwU5x21aV07h2waqDezqJgwXln9zOROD49P"
D "ISSNL4X1HXuWg+xI2g+MeNFBc4esSu931uBjftifx+u04kyUTpagVplH0GUAoGJpjXvzluh2+N+tnSen3ojKacOGPe44z0JSslA+hbADWSgxJc"
D "kzfm3JASlFy7+XgooakF4bWGSOGzkC5OjIS3A+k8aFh+zBtTZvVm4kTFyZO1QDksX1rEmNkGWyGFd/2p3eghLroWLf/HhZvCnUJJWhUtqOxrcn"
D "N6RhSbJX9Ba7Tg8lJ8HFKxQsRe8mmjar/THNgf7kUrLdgnyz3y69ePPwGCkmiX0G/1SfY9oqM0jeMXVJQ5TFkEIbZaeK5LIu9o6ADh4qvKL85y"
D "D/ZOE9YUKWX0+Tr/pK8Z0JBv6NL+oLQWIYZZ1b7kBm0Jq2dmpCuvep3jCx4oT/MvVEour6Mxj17O2H4GvJ366/4wzpfy93f8C6j1mYAEjbC7Vx"
D "fpPz2oPLLQ5MXhNPo1Wc2Dl++q8yzD3wtsDhD0thQpYSjRDzAi9XgIxaj4F5ihvjsa5jRTwFuY8OAtoT4POLZRaOxXPfhlbiYt4lk5cfXBGHqm"
D "bCXjziK09HlUqLYz37zL2KW65z3uRXB1fCdDt917fXSThCuc39kkFWFBFufHQMo3wyLmbTncxeH3msnBm0OojSnLf6YlF7ld6Q0kQ/Vn3hMGiG"
D "D3st8x7GoUxopdf6optYTu64V0VYHJv4eW+wgUfXtJBhPiNFYXLPVU6pN2lt9LUAWjZk7Q//3h49X1CRUOw+82eRJ+3OHIpzUIcRrfy2ET3v9g"
D "N3qB4p21TZWFDVwZ+VKx+/5M36Vok5ivRwmWuy6tZymwmv1hUZPzylegIom4OGYK9p6AHVlbJm0XyavrqHJl609zJqsBI4wQo5s4G3R5KrbEe9"
D "xDaa4mk3QktlWXGIfbz9GkHnsR6LtwwjqBRrmIhxpHXfwl6VUAxoTwTdxFcHiKppJ9lPMWXz2N1/tvIvKb/MsKG7qlNd0szajipieh+wSiJIs6"
D "17FGkinVI9pFDSu0O8m/KVByyVJiprvMPS/YozzItL9U1u3is3EYzqYf+bTyPMouHtttdVxhsg0qyEHbF0rmd/YHOBcLzsi4zKi+jicjLVL2aq"
D "D1ki13z+OltTaImi/FXcW60dYg8G6JR9mfGGoL5Fc41Y+algjZ+IYG/mC1pLh8DZcuhYnx7qrlVS/5fBSsjuhEG5vw5TcRvP+UE00HIe4srIAn"
D "jpFHUUnpjRoIvC7n3RFP/JoB8opvH2FD/wT/AdR8yiyq/1QZgB4q9xoz3z7BfWFIyZe/6Kjj9UG1pntoppucZHgQVcwXvZLZM972+BTwYAXR4n"
D "jne0pkY1102t/R+j6cFQaMumvGuT7+DSwQvd2IVrs6B90I9vCAKPZP3XNQfrPuOg7+sVI636R3WNyPKlUDDj5uvHNstlgrj9WdX0CG5j/XAB0A"
D "HOTAWkyd0YVdxjamhuR5nhqkZX1iBGCN7BvQqeKQ+Wejdl6oztpWgJ5/JGMUNY6FSHqPYtDrKj/+WgI5kUlHVSU98JCrrIqx4n6XKmUxbrNau4"
D "HIvvjm5hv4b5qbDC2x34hnwE+xE9BUUpgjW8IIVM/l/CWHfmRxm7ouetc6TuvPLLZ8LdRtMR2n+pLA+Zp4o9Hbc4c4ZKUF12JMkH4objpBShP8"
D "jbFh1Lwpadn6qEwdiWr84eMZW/SgQ6cL+9jYsnxlMPy1YfkOjUWkh+v0Kx57CImrJROrc+BMoJostcEULH3Rqv1jcPRrbr+FPcw8bdh11Gj2KP"
D "QyjsqyJ6T81F2KOIBHVNzsCXhFAuSaZfN0CpZI4D8/1AgmwruYvZXZl06KtW4XtOrMG82Va+ydK9Ka6kBcTgKT/26y+XpmcVpLfq5FaZy/tDfH"
D "8djwWCge8Q6kCh/Z+F4+Yp92DC5h5Q5ysYZ5x6Pl3pLAA9XsuDKn8bMITiRWlR196vc/Mu/n3dn3LHQdHTKc4SouS79FhFzQzo67iufdmbu4ry"
D "Y0xtIyvz80x8+Z7ysRmvPpo6O9PxvYGcPP7RgfvKCN11JGvkbukGFPEpXhosboTLEZQ470rhNxPSMb1bnHTy4lFn61lieXJ95m89lc58DSkdtE"
D "uf86woODQglU88Z7Ncg3f4b3IcVueIjQV087NPNdUsK+ntEWmFhjMyUZnpBwM0/7qobnvEbHm6ePw1M9lgrF5VVbKiyiPLDHRjx4eN3g61wdxe"
D "gDq9HN4gGSZhpXfQfMtq7XW2xmYtgY+9hjiz+N/jTiYazTRSTrEMOWUw7aPT7GZcwK6xSSEK1AWjy0c1MbVE2yB51fx34peVgMwJFM3B4lGTBu"
D "FilaHztWrZAG1Fhu8xXGoX5XGxxv/MDdcrdF6yFb6uFJgWm2bVqskGSKolVtVtbAjjTv+jdUaHv7gknAGB2x78AyTtKWG+foAPZcs3k1w2ZEyq"
D "YsscPmXOgVy6w1eoRdJMPfMu9nFYHjkDxgYyC1amLwFr/1GVDZVp1BPjzoEzHtstMlbu4azj9R1Yen6ZyWqgOgz1QiYCpFnd5rbY7fiHntiG1Z"
D "GckazKz0UxrYjU7jKVC2pmWomvBdR+qDtWajkmc8yRn1Tgt0NHbQ58X8YSMWHFqZ3J4cHQ/8xngJyCREbH3znKlD1GB52Ke/i0zWojh4TvA3Gp"
D "4keqPPgE5zh8b9AJK47J9ulOXi57gpMMnEKuq9dbopZJCzmUmWXVcOWAWFVd8AguA1AyhfRpgnqs4OC3Ico7qvmFQgD02xaJdPyMoQzE5J4Iug"
D "O4efMaeB1Q/3CKiRf+AQdfy4iMQSu6olUnmjGRPlbTDs2N8BzQphpmoxmRfJakOpSyT0wEkcjfo8wu9VO6P4eoIY/bIQWNfBKrSKWCfndnYtiw"
D "dfvoMIelNZKQMPkBCeOtW8g5MXfb2O/4WbO2HBM087oa2qUMU/vHF0ibcvzt1L/bHuoJNgY+HgQat//xArVXFBhTXL6QuqEbggz+dMFsrcw4Iq"
D "3REbuxYsG8yqI9KVOzbfDyyN/DguNahQb8U4hh/15lbGBlt+aYC23WeUI9hytmjIgxp8XC9ci/4Fsfk4mX8mZkU1pH7UnMKGr3oXt4RDD/j8lI"
D "7gCgkTN+8FsfxIkKGGFzliYMt9D1UWSNHxa6McCi/GypwuaP610yIkZUQDj0ETWLA7DpILKRtpBLkZm85ciD3VFE8NCbXhu3+S2TakvPyZ/QxA"
D "23lz65aCeHhKMxavIttnRqjwKsEU4fUbrAZcho4q2yD/3luCfhykpQMxAoqp4vfhmy78xndwLD/GcN64wEa6WBUHAz3JdPL2IIHfOa44pg/9+1"
D "N5RuI6fPLgxx2UnMd+AhvASYpZHhpjgIDrkXmkPOJYSl75YTo1FCj4/j0fc5DB44HAFftYoGpvgZzDdiGQeOTbZerJdWXHLNUVmS0CO8rO8hkg"
D "kRyIJbqoUq/UGcMc4VmaObSHM6Et9FOrg0LKFGKBWgXTKv2pNPXR6EgxAIw1/WdMndx0up3zx7t4nqCIc4qbNCsGPr/1rSNVx4lPh27Ky8kjlD"
D "7S6bPYdfsXF1J5/ZgSfWQDXo9y+KYJsBNOk4Kwkj7LTJqrVQyLGYHULe/xHkLhkrDY7XEoIsLJmG7nzZukuXwlN9c39rHb9S0bGiWMN/xZaHO/"
D "izx7k+3fIkuqCFzYPu5/1vBMfeL0vJ5s+vtJsBapBZMS/IG1Yt40kiAfk1h0yU4U37oib9FO6VFuUr1HcyckUOuKhudMNLR9TCzPGj1tQJ9br0"
D "bLinBIGrtwa/1dksIZtZv6lJ3J7xxCFL/65aKl/It/VkPZmzWntLQ03GZ+PZnOyAeqXr2mqd27fLTYGZwcNhSvpQuuZChaaLFA+nBGkEvCUjwz"
D "jxfTcFN4HtL2MfbsGaCtI3Ksgbxn546bj5F3k/8ZrLYAZtWAp6VCfThLXGimGKHNSwKD0Ktvznru8xXGAj5NAjST42l9OeG15o0iOEHDMRaZQs"
D "W3nbzCbL2ZGOz6OlLK0K17XHw27n66PY3Q/EcPbc0DFXKhMbxz8buCvLp58SJnLCOhGZoQTtfrDYUxl592duig1QQx2CsODNVOlMeHQ4dBk/jk"
D "XDw4m7xtZxFZf4TPWycmhoJDnK44NYz88PsB+qip+GSbQRRvNh/8X6vcPB+MrxO7CqB4ZVlTjRZ+hMg91UsVrTi4cfobxotO1q91Y2U5tUvLKx"
D "Gk18mXN+hqSY6tRRk+R7RVDWESsSNxUHyVVioB6s9J4sDKMEGiliTBkua1vUB6vt/1m0ub9Rl3U+L/jfU5wtpteN4r8L5Dx1LUkrbpvyV8ySPS"
D "zwAFSdllY0i7nRDcWFC1QB5/N79i/OQm+SOVD1jjLllrQeO1ez2N4I3NJdEhXnyLNBQoV29EbkBsh8AvGtDM+fplkv3kHvHRgM7W7UtfkhWk3Q"
D "B5/eic15qjXlHkJyqUgmn+GJbQF73cLkqb/PnJwflLjpHWe06O2RDrp/md0PNw6LCCqFZfdEBE/9nEqo/OSF/R1sVqIatCIdPXBBkOKYc/0sdc"
D "iTvYtdh78KYTiQ0mWwgoP1AQeTeNr5JC4vY2Zlr7q+os6glm1qdAzut55N3OmgKFNkez3DTSapT6pKLax2N2GrU2vqGK6o029b0jKZrx4k0f68"
D "mWE36NTNzuf8xHlHLYYKA61uCzW9ccs0mFEyEftYO6WYjP69omuY7LVHcCtQL5oK8ImN5yw1S4MTtq5rf2ZZwPtXis3hMoSaeKsLixZCy0JCS/"
D "eRgFFXoCxZrMoA+0CqrUXirHOF0SoJaB7UM6FixrpHXRSJKAr/ndfwPk9aHRkBvJkMLhOsV6hHB2ceNXrjtPhjQG6vHA+4hz+iYWPEehKOoU5R"
D "42JUhpKV2NWIb/qFN/RO/3amWdLgo1lPpEqnbX+8lfKWMnN5V9mqyy/URL5BxwKt3aRTewQmxZ/cRMQtv2qvXGgyteWZ47WF6P90tPtZal2v7y"
D "AfaBaqMeAhOg6X0GNjTEc2twbNctnOrMOTXavoSr8tGR3kP6nHvFj7JP1hw08bNs3baMcZbAqxgcDmJXRY+jRTnU5gsMN6T73IUAv2J6CsJdlh"
D "pg5GWkqlTpuaSUqNyWALRuTnFyfLlqh2q6RHnvW9ibWFsjqiOweAT3cMcpG1vymHqW2N58WVwPlc9uXSbOZcfGLPkydtTkyZIL3s4UYikgdncf"
D "1DgXzKRk3KkB+vBO5AHSrHRF5iK9JdHRKVQnxvpetIU8myO8H6erW0tuKf6cGBeBnwUUh2d7cFHQCYcRxO27StcAE7fN8koKR3LZBEnxLGok+X"
D "CGPuob54+agjUuRtRXzRzVtq66tonry4QHu8OStrqw9ljjYN3Lq48E0egaSbWi5KcjnTHm+Uj+9gA3ppdoYVkppVGbg44123eJhtnnrDaCYPYJ"
D "pu0uHZ81ZJl2VLpgZQzoZzBWvKKzM86fPR59H/WTyYmomRhaCsgZeGKYcNQQ1eU/xtC0UQqiKsej600TV2D8aY3Zplv/9W1VEGVLk7FpTcrOsP"
D "e67Fn6v3j9DAjdlln3XFLN77gNOM87f8HrJieCvPyRHzEXqgRNR2AP5LP6zuTkN3kDK9QPXz4R4g+qfiBnjUA23bENYJUgYd+LcuPEgntO09AL"
D "opnkbm2awIi7cg96c09ZJTx1p+g1/Do0XzEHwBWKmSYVtmWEGFU8d5BFCS3nfVqkoxu4Cimbk2inR/fozF2uSYkAH8ye0jdwA/OnLks7TezWHM"
D "wbk0IasmwVt2ZndREbVzMHiJka1c01E3wH7oCeEEdxhM+x8DsDUBunjW0GBJThDMogcUAEHYIyIIQvJBIoQxU19yUy6dJTzyem2/LaFf9Syn3D"
D "7zNTuYD1YUwXX5kHEdAZzBIYJZRl/RazNepQekf8K/uqw4kae4ijIV1NTtyX4lQH7OAeACBI6xyXIvepgt5VWJTZR9xvl7T9g+lS5XQs+mgQMd"
D "LGnveRhOMno9jLTbnuI77C2d8kmREjE9VPLadUWNaNGJUHl9CHeufWjlrWv/a44Sh+U0FUOeOmLxSj4C7yJCGBe7UQXXtxIS59x+9CbHai9r1q"
D "B7cIXc5nANl0cYlleES9CbSiTR5PutJmQy/dVJOu2hkze60jaowURyhQ6vPXYYvBTlxVMuERt2uVRLTTpgnWzla8hwctOGFi+VxMSforjQIfYp"
D "XKk4HrUY4+e9P7eOoTHhQ7jwnhlF35KET4xkF3wo+oWuDK5G4Jbrhao3Bz4Z9R7Hf4abpk1FvB+OoglFnNveA3WQbIb7WCu4uPlRDmm1RZs6B0"
D "oumqvPSAed+73BFfHb4PWp5EWTnXhTbPgIFSqLxpn0Sgs9R7t5scq/SEujjrP85c8nICryKddhnXbpI+8dNb7P/a5Md4o1tmxYMXkG8+GiRkrs"
D "J5WUb+Nq+ryqUn2VSCDtcyiIY6J7Vft4fZ+PJTPLVMkuG+e+qlm3mhPrGxCNFGRTAXv7Wb4ZxbKQ7Q2XhjecJFszBy1LGIvbclOF+inqgsfOBs"
D "UvEKK7gqYS9fQ0Tfv2bO77G80owO6EjDfkUJTGN6j+7MN9IZjeFtgN2x4Q4ro67Ns43TYf9NpDeBS5m4RCjEW87ZhNm0phSDwRca62z6ewPjna"
D "b9SgNu1Jqj5TbryRr/vWu9xbqYWuzHoDe9kr9/Av+O/LXLTP3757/eJDHG/EK+a6d/yS5OfJp0YelfqLf1X+LgUrEuIQ3WHQZW04YYs9kQVM7q"
D "Qo0yEvOd7nmBj0tHniYdBtLvMYqV93uqgw0YMFOMB+0iWhg4kqN1OjvHtCuTh+CJEtQaGuX44cFbmdg3talS8IWrlG3Y14R7lYqd67UfymTyRm"
D "vs4lZtU3TmJ2d8SPvuqAQPxRM7GlAv3upATx9OCOuGPlfaSJ8qXUChl9sJDJUICEzMFm2Qi0GxtbUvKIeAMoX+x4UyIIzEEFA4BJSDCqOBAAqQ"
D "q9RRr4vFx7FamoaxqZT78wAiy5exr5cfqRZi1rgFUy16eeUD+i7AtPTMqsh5AZJalqKUT2iLv1Nstn2YyGXpryBHOdpKSZw7OuVdf5koEofhQQ"
D "50SCVhbHSTLbybctRD3dONEGne2zz7aOfY70M7yroQ9RpjqYkoEom5P6lXRdM6MTqq71teUqWfUls6b1alKt2XqgPw3rqnmgrcetgqlKGmd2jB"
D "uWAoCK7GwmlHtHcYqUbEx98dFcX3d1kTvkHgGf4BKxFa0cTSTCgoAMvP6SeY9Xg0XdnR9YOQqW2aqQXIwmSzgMZxUWWEY/fCqK+HGEn2ZxL+bt"
D "mhT/5QgvhX8poMChLBZqg+RKrSjh7gHvI+jb2dSTzrhXh5v854Ua1M1dLuJRsgF1dlt3JpHfLHglCmvG/SJVclxhxVIMRChsfJ7PDjllkI2JIf"
D "6I26ZRIjrMOvuw8e2LYDt1F6zVd2iEfWOp3xR4f9xsq/EAAlSTOSRcnYsCnZNMsuviYSfuyfy/IV8Sn6vvRrkUegEEgjrUGIL8LfLuF0znizqF"
D "SdOdvN3voJLDXxHm0oOxvAbLKNdsxLzmlBkMnU8CP74QTD5dRpLifeeDaz8pvWr9XUikprbyDVP7/jd5h0InkJOIC67YXJFTlliHVtIaVvLMW2"
D "o2yB5jfHTA1vHWH/nMIyTQvMo5UGXY9EMU/IXs84GHHUlWVHGxOyDuZTm1fcpWzojn3ffx3FEeNJnhLKJDlQAeVQvv9neKyhGlJbL5bzv4gDMb"
D "fp5ZN4Bty+RIzRH2KYYHWSrg9a8WNgJP38f//JmcX/RC+SA2vDYAvMzMNv8ZJzd3tQ1s/CT7rM5RRu9HfPoaHe9XxCrfI7Uqajv55//X4ROmAb"
D "PFLWAl32sW+wbKlXww1qEHg/Gi7QOf+D0emz+lC9qFly5ISINXMXn94fx9iBYLl572fAV97Qu0X/+bf0VFHiv0sC/mr+2br8GZCZsmGRA9PX3S"
D "8qBE+0wTwvCvP5q0g1EZOC1RLfi148w+EFbGRfgAbwAjzIEFAals8ehNNOvYt7DHWWxM3BhHjWZEMwOT6U5pyCR0GT1cNTMO+6UDRgCETAbrm2"
D "SFnqfkmQ0+Jdt+YS48rp6Iywk4xtlZGwLRNpWfMVkNzZ6lqsaytdQuxCJxLs6lrZtQocNGJUuRFoeimokhXe0ASECpdObwe1uRt/CmVGAPJYeL"
D "Ofz6gFXHWZIC1G+OF14fy+/A8/RalrynQ1sXm/5gPe0nDfIv99N98sVVEkommSeJx0fUak+H8s26T2t4s12PKO20VEbXJDwH/Z+C9UWJUxpUqd"
D "bSu6SciH+MrqUo1PWtuUBY9SmXIZyXllcm+Vfa5KHcAKo6Iy2K9Mx2XX1ZP9LzhkgUsMia8oW84kaP31ZO3B36m+7wydVj8KGMr2KQBtUE1hDF"
D "kHv7rVuebA9G2V68br2F0NOW/tvUG31bHFW/zNn3OHBcEpwaPG+ZerqItdYAgikfYBk1hLSBmH3lP0SunrRsdtLNzVEHRCtauTqHRFp1H/yKuh"
D "2kXf/UfDwWFUNr19xuza0GpOaX0FpTOh0UIpzxeMDB6MT1OmWTTvoHJPSzpDhvwTRxKrpSBLpVQv9zXCdNy8Y42HPZjngILaVY9SJK9577G6tU"
D "QJ/ZTI27jr0GhS08szS6xdt81kyUg63psX2PY64oe6uhmbqrdjDkrZEpk5ZkP2krFrprdKBRsbBOU2KTaHFkXvDd7h/B4zlQ/6M4CIcEHumCsJ"
D "kj4ArgufTOsX9RhBK06IHq5e9wBtkmQ9AzbCTEDbMp6ZD/AT0F7vfC/N7eRy2LxY3RHxYLVB59wYlzwTd3LbLaPa9w9rJmNJiyTkDi3+GvR/gX"
D "u/NDTpGVGq3hU1de9KOjHqYs1SBhs7HSvOmxnUO7ZRCgksrtI9qPzypi9nz5s9HvrUlWqjiDIhktXt6y2e9C3vSSeK55ofEz/KaQCKUV9S4EH3"
D "I4Gb+/V+WJ0AUtru+qFscSgRMt5Nwt/eiOa6xmgLjYu+P1pGnuRHbn61tOGWmRX5ZG7ZGO2vG64LHEZz6kyzcSesta7esUy2vzgEx/+BjX9RxH"
D "jeUPy0AFlXEKbJnOv1njtT3venq04+oLh6wH+DIXGr9Vd+MPfkxDUeipch+q8dkp56NpjgsJG7vZCVKQlzdJdvyKY77+fZ2OG8Cs9Ky939M64H"
D "iLDw0faOigXeiJcDtnsRu/SfaebMt550W/pAO3zl7xosXVxZJd+rtgcEkdVhHtBS6NiP6FI0i2ll4RFzJ3XPgMpDfAcUauyGcf4Zhpi/NpMS2N"
D "UC9cdeSePJHBvAL7bmb05d/pBs+ArwCxXKpN27afS1Os9AA7w3OO75BUqCZEgyh2aP1mTwydtHLNjWAD6EbSlDiaZkKiZrFwJ7CntXi7vefj82"
D "eQi/SgYHWBhoXxfrtgjf52Gj4363HNDxqnEVqvBqvYsDkrj5xe7X+w+5tmNz2QE1p+QvjKnQGiuuY3do4g4B2V5a38ZgQg4H0LrMMrxuog3NI/"
D "6nUJHL9ywrJHxpu5veJIYVwlj8BdKnftY0B1RfMieb1BPuIvD7Jy5qdU4Y5CndPlY70qwAhgMR3Z7KmupdcQN/6kSeATp0uAbrNOGDeZfNPZj5"
D "fH5C6UF0l4azjgJcinkUIGJWHLU5RLSD5CSBjtS8ZUalEVDuBtWdUsV0OXDGaD55bTf1g9fquMNnRKYO00/loMzKVemUGW6RcwrUd86lqokjJr"
D "Z2dtiM0+pguZ+seBsZqBlUutDK6MR5LOPFonmXLon8Pvf/WHz+v9+5F+2KjFab8WiI7+GBoCTFXv9zNsmADFW05GRRmawS4BMQlP4zJrlR1Elp"
D "R6hp4OaSGIK3QBhSM5zS+gzY7tt2C2ka5V09ecJ5AmXQ0LiHfvsj57/N9UKy2P9xPcOdnMyM32eY7duGMD8D5JS320S+PcnbHYwFeE5AgN95lN"
D "VbToRA6U4sED0InoJaRmUGdQSnWoaqC2odJ4SplriyDhRb+mLC1FiMIqC0YvSkFlHjzBP2DLsM6XlZV2e9/5z/eB1jkx0hqMsbgk/S0tEZKhN/"
D "eZSXU7Yp3N7dxSv90U6yaAvblhnKUMh+EEGz+tg7q6s+pPMU8wwgcb39vab+ieQZcGV1AUpHHX8hTdBkSKB/O16ODoc/KolQR96++RdReTNp+h"
D "MgfFuuJdPqiETzNo54ZUJU1vBnIsGL3OXk4XekNjv3b5dZgp3HryIhwKf8EJoGfCA7c6GnnPCb7v2zZwATKO0gd+7zoMMYgqrQykbQIqHVLoP2"
D "8kGVMrUV9ikQFCfVG73vcdn1sgdx15OH8zD6y5cbgh8YQu06HHr5pmnzMkMV9sKYdpT8tCc0/X33X2mS4n/Gt8X+S0Sb6J/JC4buDIUHx+uF4b"
D "Dhe/WLdxehehCCo9y5juR79Kl7yM7uo1Xav8McscEzL0LltRn4th+jM5Rm+MrCAifvXrTkOqcKo9gFZdC2PghTgTK09iGg+M3n1f8HUEsBAhQA"
D "FAACAAAAEUY+QgAAAAAAAAAAAAAAAA8AAAAAAAAAAAAQAAAAAAAAAFBCLVVTQi1TdGFydGVyL1BLAQIUABQAAgAIACg/SEJUvZ99AQEAAJ8BAA"
D "AhAAAAAAAAAAEAIAAAAC0AAABQQi1VU0ItU3RhcnRlci9QQi1VU0ItU3RhcnQucHJlZnNQSwECFAAUAAIACACJkUhCbcJA8YEMAADxJgAAJAAA"
D "AAAAAAABACAAAABtAQAAUEItVVNCLVN0YXJ0ZXIvUEItVVNCLVN0YXJ0X1BCNDMxLnBiUEsBAhQAFAACAAgAMpJIQiw8gkrzAAAADgIAABoAAA"
D "AAAAAAAQAgAAAAMA4AAFBCLVVTQi1TdGFydGVyL3Byb2plY3QuY2ZnUEsBAhQAFAACAAAAEUY+QgAAAAAAAAAAAAAAABUAAAAAAAAAAAAQAAAA"
D "Ww8AAFBCLVVTQi1TdGFydGVyL0RhdGVuL1BLAQIUABQAAgAIACBNK0Ia8FqhpQMAAH4GAAAnAAAAAAAAAAAAIAAAAI4PAABQQi1VU0ItU3Rhcn"
D "Rlci9EYXRlbi9QQi1VU0ItU3RhcnRlci5pY29QSwECFAAUAAIACACidEhCCDvmwagsAAAKLQAAMAAAAAAAAAAAACAAAAB4EwAAUEItVVNCLVN0"
D "YXJ0ZXIvRGF0ZW4vUEItVVNCLVN0YXJ0LUxvYWRzY3JlZW4uanBnUEsFBgAAAAAHAAcAHAIAAG5AAAAAAA=="
E:
EndDataSection