FAQ
5.0.24
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Updated minimum framework version to OTRS 5.0.38.
- Updated minimum framework version to OTRS 5.0.37.
- Code cleanup.
- Synchronized translations.
- Fixed Portuguese translation file.
- Updated framework files to OTRS 5.0.34.
- Updated copyright.
- Updated minimum framework version to 5.0.33.
- Code cleanup.
- Set minimum framework version back to 5.0.31.
- Fixed: Editing FAQ article deletes before stored inline picture (bug#14232).
- Fixed: After deleting image from the FAQ article, it's still stored in the DB (bug#13871).
- Fixed: FAQ CSV Stats always 10 lines long (bug#11041).
- Updated license information.
- Fixed: FAQCount() does not count but returns the count of the last category (bug#7980).
- Follow up: In agent FAQ search is not modernized (bug#12698).
- Fixed: CustomerFAQExplorer does not show pagination if configured SearchLimit is reached (bug#13885).
- Code cleanup.
- Fixed bug#11646 - SQL quoting of category IDs ineffective.
- Fixed bug#11889 - CategoryAdd returns wrong CategoryID if subcategory name already exists.
- Fixed bug#10650 - Navigation broken when keyword search result opened in CSS overlay.
- Fixed bug#12326 - FAQ Permissions not working correctly in customer frontend.
- Fixed bug#11446 - Refresh after language is added tries to add the language again.
- Bug#12900 - Widget "This might be helpful" does not show FAQ in subcategories.
- Updated translations, thanks to all translators.
- Bug#12569 - Missing explanation users (with visual impairments) in the 'Preferences' page.
- Bug#12433(PR#67) - Dynamic Fields for FAQ don't work as Link.
- Bug#12935 - SQL Error in Systemlog "Server gone away" and "you have an error ".
- Bug#12964(PR#73) - FAQ types are not translated, Thanks to Balázs Úr.
- Bug#11478 - Editing and Deleting of articles possible with RO-Permission.
- Bug#12067 - FAQ Explorer shows Internal Server Error if no categories found.
- Bug#12768 - Excel output is missing from the FAQ search.
Build for FAQ 5 patch level 9.
Build for FAQ 5 patch level 8.
Build for FAQ 5 patch level 7.
Build for FAQ 5 patch level 6.
Build for FAQ 5 patch level 5.
Build for FAQ 5 patch level 4.
Build for FAQ 5 patch level 3.
Build for FAQ 5 patch level 2.
Build for FAQ 5.
Build for FAQ 5 beta1.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
A GyIK/tudásbázis csomag.
5.0.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-Paket FAQ zu installieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está a punto de instalar el paquete FAQ de OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTRS csomag telepítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>NOTICE</strong>
<br/>
<br/>
In order to grant users access to the faq menu, you need to add them as member to the group 'faq'.
<br/>
<br/>
The menu items that were added by this package will be visible after you log-in to the system again.
<br/>
<br/>
To create new FAQ article you need to create categories and define the permission who can access categories.
<br/>
<br/>
If you are using the FAQ approval feature, you need to create a group and define a queue.
You will find further information in the sysconfig in FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>HINWEIS</strong>
<br/>
<br/>
Um Benutzern Zugriff auf das FAQ-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'faq' sein.
<br/>
<br/>
Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
<br/>
<br/>
Um FAQ Artikel erstellen zu können müssen zuerst Kategorien erstellt und die Berechtigungs-Gruppen dieser Kategorien definiert werden.
<br/>
<br/>
Wenn Sie das FAQ-Freigabe-Feature verwenden möchten, müssen Sie eine Gruppe dafür anlegen und eine Queue definieren.
Weitere Informationen finden Sie in der Sysconfig unter FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>AVISO</strong>
<br/>
<br/>
Para poder permitir el acceso a los usuarios al menú de faq, usted necesita agregarlos como miembros del grupo 'faq'.<br/>
<br/>
<br/>
Los elementos del menu que fueron agregados por este paquete serán visibles después de que cierre y abra su sesión de nuevo.
<br/>
<br/>
Para crear un nuevo artículo FAQ usted necesita crear una categoría y definir los permisos de quienes pueden acceder esta categoría.
<br/>
<br/>
Si usted está utilizando la funcionalidad de "FAQ approval", necesita crear un grupo y definir una cola.
Encontrará más información en sysconfig, en FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELMEZTETÉS</strong>
<br/>
<br/>
Annak érdekében, hogy hozzáférést adjon a felhasználók számára a GyIK menühöz, hozzá kell adnia őket az „faq” csoporthoz tagként.
<br/>
<br/>
Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
<br/>
<br/>
Egy új GyIK bejegyzés létrehozásához kategóriákat kell létrehoznia, és meg kell határoznia a jogosultságokat, hogy ki férhet hozzá a kategóriákhoz.
<br/>
<br/>
Ha használja a GyIK jóváhagyás szolgáltatást, akkor létre kell hoznia egy csoportot, és meg kell határoznia egy várólistát.
További információkat fog találni a rendszerbeállításokban a FAQ -> Core::Approval alcsoportban.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATTENTION</strong>
<br/>
<br/>
If you uninstall this package, all database tables that were created during installation will be deleted.
All data from these tables will be irrevocably lost!
<br/>
<br/>
All Dynamic Fields created for this package and its data will be deleted permanently.
<br/>
<br/>
The groups 'faq' and 'faq_admin' that were created during package installation will be deactivated.
You can activate these groups again in the admin area.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ACHTUNG</strong>
<br/>
<br/>
Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
Alle darin enthaltenen Daten gehen unwiderruflich verloren!
<br/>
<br/>
Alle dynamischen Felder für dieses Paket erstellt und seine Daten dauerhaft gelöscht werden.
<br/>
<br/>
Die von diesem Paket angelegten Gruppen 'faq' und 'faq_admin' werden deaktiviert.
Sie können jederzeit im Admin-Bereich wieder aktiviert werden.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATENCIÓN</strong>
<br/>
<br/>
Si usted desinstala este paquete, todas las tablas de la base de datos creadas durante la instalación serán borradas.
¡Todos los datos de esas tablas se perderán irrevocablemente!.
<br/>
<br/>
Todos los Campos Dinámicos creados para este paquete y sus datos serán borrados permanentemente.
<br/>
<br/>
Los grupos 'faq' y 'faq_admin' que fueron creados durante la instalación del paquete serán desactivados.
Usted puede activar estos grupos nuevamente en el área de admin.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELEM</strong>
<br/>
<br/>
Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
<br/>
<br/>
A csomaghoz létrehozott összes dinamikus mező és azok adatai véglegesen törölve lesznek.
<br/>
<br/>
A csomagtelepítés során létrehozott „faq” és „faq_admin” csoport ki lesz kapcsolva.
Ezeket a csoportokat az adminisztrációs területen tudja ismét bekapcsolni.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-Paket FAQ zu aktualisieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está apunto de actualizar el paquete FAQ de OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTRS csomag frissítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeInstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgrade();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeSpecial();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_1();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUninstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeReinstall();
0bf6b17d762a19d881029c31f266254d222de152
2019-09-20 16:13:14
opms.otrs.com
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgdXNlIC4uLy4uLyBhcyBsaWIgbG9jYXRpb24KdXNlIEZpbmRCaW4gcXcoJEJpbik7CnVzZSBsaWIgIiRCaW4vLi4vLi4iOwp1c2UgbGliICIkQmluLy4uLy4uL0tlcm5lbC9jcGFuLWxpYiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vQ3VzdG9tIjsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCnByaW50ICJsb2NhdGlvbjogcHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlclxuIjsKcHJpbnQgIlxuIjsKcHJpbnQgIjxhIGhyZWY9J3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIHVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7Cgp1c2UgdmFycyBxdyhASU5DKTsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCiMgY2hlY2sgQElOQyBmb3IgbW9kX3BlcmwgKGFkZCBsaWIgcGF0aCBmb3IgInJlcXVpcmUgbW9kdWxlIiEpCnB1c2ggKEBJTkMsICIkQmluLy4uLy4uIiwgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIik7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5mcGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyXG4iOwpwcmludCAiXG4iOwpwcmludCAiPGEgaHJlZj0ncHVibGljLmZwbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
iVBORw0KGgoAAAANSUhEUgAAA1wAAANwCAIAAAC06fzeAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1iT5/o48DsJhCnIVpkyBGSLilRUNogFLYoiYp3Yak+to1Xb+tXqUetercdZxUktqIALQSjKqkdBQFGLIqJWZKkJO2T8/nja95eThBAZYXh/rnOdK7zjeV9iAw/Pew+aQCAAhBBCCCH0YaN39w0ghBBCCKHuh5NChBBCCCGEk0KEEEIIIYSTQoQQQgghBDgpRAghhBBCgJNChBBCCCEEOClECCGEEEKAk0KEEEIIIQQ4KUQIIYQQQgCgIH13cXGxfO4DSVFbW9vdt4AQQgihvsDV1bW1XW1MClFPYGk1rLtvASGEEEK93pPHeVL24uNjhBBCCCGEk0KEEEIIISSfSWFtbe2zZ894PJ4croUQQgghhNrhvSeFtbW11tbW9kJ+/fVXsuvt27d2dna7d++mDq6qqoqIiAgODl6+fPlHH320a9cuPp8vffwbN24sXLiwsbExJibmfe8NIYQQQgi1TzsTTQoLC+l00QnlpUuXHB0dExMTv/rqKxqNBgDz588PDg6eP38+AFRXV8+ePVtHR+fTTz+VMvKoUaOcnJzq6+sPHTo0ffr09t0eQgghhBB6L535+PjChQurVq2i0+l5eXkA8PLlSwAgM0IA0NXVjYiISE9PFznr0KFD/v7+UVFR27Ztu3nzZlFR0f79+1euXFlVVfXNN9904u0hhBBCCKHWtHOlcP369eRF//79lyxZAgCPHz+uq6tzcnIKCgq6ePGiq6vrzZs37e3thc/y9fXdvHlzY2OjiooK2VJaWnrt2rW4uLjnz5/Pnj3b0tJSIBA8f/58y5YtYWFh27Zt68C3hhBCCCGEZNXOlUJnZ2cXFxcXF5ehQ4eSLfHx8TY2NpmZmdra2leuXGlpaamurm5oaBA+S1VVtbm5WXhLamrqxIkTNTQ07O3tP/roo/bdDEIIIYQQ6qB2rhSGhIQIxxTyeLzExMTRo0cnJSUBgKqqakZGhoWFxfHjx1taWhQVFQUCQU1NTWFhoZWVFbVMCAAlJSUuLi7ktaamZge+EYQQQggh1H6dE1OYnZ1tYGCwefPmDRs2bNiwISIiIiEhwc/PT11d/fjx4wDw/PnzGTNmbN68eenSpcInWltbp6en8/n8urq6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B6b9BcJwImP3oPpWQEBAX48Of1EIAB0dT/9RehWoVAaDTqfi2mpkkyuUMpkMFMoZQfyxY62Hezp9wtSNXCMlY8YD0/7CYDiRkRsBRSFCCCGEEBpq+otC/Jk7hBBCCCGERSFCCCGEEMKiECGEEEIIARaFCCGEEEIIsChECCGEEEKARSFCCCGEEAIsChFCCCGEEGBRiBBCCCGEAItChBBCCCEEWBQihBBCCCHAohAhhBBCCAEWhQghhBBCCLAoRAghhBBCgEUhQgghhBACLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghAKD32+NB9a0XMA+EEEIIITSMKEqlcrjngBBCCCGEhhnuPkYIIYQQQlgUIoQQQgghLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghwKIQIYQQQggBFoUIIYQQQggA/j9rfWeWKWKoeAAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkludGVyZmFjZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+SW50ZXJmYWNlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5JbnRlcmZhY2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgY2F0ZWdvcnkgbmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5GQVE8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeUNvbW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBjYXRlZ29yeSBuYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPmRlZmF1bHQgY29tbWVudDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW06OlZvdGluZzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ijc1Ij40PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1MCI+MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OlZvdGluZzo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTo6Vm90aW5nPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iZXh0ZXJuYWwiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgRkFRIHBhdGggeWVzL25vLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz4yPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdENvbG9ycyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj5yZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjcwIj5vcmFuZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwMCI+Z3JlZW48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iZXh0ZXJuYWwiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENoYW5nZTo6TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkV4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iaW50ZXJuYWwiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iZXh0ZXJuYWwiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0icHVibGljIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q3JlYXRlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENyZWF0ZTo6TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+MzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9ImludGVybmFsIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9ImV4dGVybmFsIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9InB1YmxpYyI+cHVibGljIChwdWJsaWMpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjEwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3dTdWJDYXRlZ29yeUl0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZBUUhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkZBUSM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpdGxlU2l6ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkRlZmF1bHQ6OlN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5pbnRlcm5hbCAoYWdlbnQpPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFJlcXVpcmVkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk5ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QXBwcm92YWxHcm91cCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Hcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpBcHByb3ZhbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+ZmFxX2FwcHJvdmFsPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFF1ZXVlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlF1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5GQVFfQXBwcm92YWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5GQVEgYXBwcm92YWwgcmVxdWlyZWQgZm9yIEZBUSMgJmx0O09UUlNfRkFRX05VTUJFUiZndDs8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0Qm9keSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8VGV4dEFyZWE+SGksCgphIG5ldyBGQVEgYXJ0aWNsZSBuZWVkcyB5b3VyIGFwcHJvdmFsIGJlZm9yZSBpdCBjYW4gYmUgcHVibGlzaGVkLgoKICBGQVEjICAgOiAmbHQ7T1RSU19GQVFfTlVNQkVSJmd0OwogIFRpdGxlICA6ICZsdDtPVFJTX0ZBUV9USVRMRSZndDsKICBBdXRob3IgOiAmbHQ7T1RSU19GQVFfQVVUSE9SJmd0OwogIFN0YXRlICA6ICZsdDtPVFJTX0ZBUV9TVEFURSZndDsKCklmIHlvdSB3YW50IHRvIGRvIHRoaXMsIGNsaWNrIG9uIHRoaXMgbGluazoKCiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8mbHQ7T1RSU19DT05GSUdfRlFETiZndDsvJmx0O09UUlNfQ09ORklHX1NjcmlwdEFsaWFzJmd0O2luZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUVkaXQ7SXRlbUlEPSZsdDtPVFJTX0ZBUV9JVEVNSUQmZ3Q7CgpZb3VyIE9UUlMgTm90aWZpY2F0aW9uIE1hc3RlcgogICAgICAgICAgICA8L1RleHRBcmVhPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRQcmlvcml0eSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjMgbm9ybWFsPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldERlZmF1bHRTdGF0ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6QXBwcm92YWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPm5ldzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkFwcHJvdmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz5VbmNsYXNzaWZpZWQ8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXB0aW9uIj5TeW1wdG9tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXB0aW9uIj5Qcm9ibGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXB0aW9uIj5Tb2x1dGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MzAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpGaWVsZDQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6SXRlbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iQ2FwdGlvbiI+RmllbGQ0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj40MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpJdGVtPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXB0aW9uIj5GaWVsZDU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjUwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ2IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+aW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iQ2FwdGlvbiI+Q29tbWVudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnRkFRJyBvYmplY3RzIHVzaW5nIHRoZSAnTm9ybWFsJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TGlua09iamVjdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+Tm9ybWFsPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnRkFRJyBvYmplY3RzIHVzaW5nIHRoZSAnUGFyZW50Q2hpbGQnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5QYXJlbnRDaGlsZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ1RpY2tldCcgb2JqZWN0cyB1c2luZyB0aGUgJ05vcm1hbCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OkxpbmtPYmplY3Q8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ1RpY2tldCcgb2JqZWN0cyB1c2luZyB0aGUgJ1BhcmVudENoaWxkJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6TGlua09iamVjdDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+UGFyZW50Q2hpbGQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYS48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5NZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz5JdGVtQXJlYTwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PkY8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz4zNTA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBFeHBsb3JlcjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5FeHBsb3JlcjwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5Plg8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MTA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5NZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT48L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz43MDA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEV4cGxvcmVyPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkZBUSBFeHBsb3JlcjwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5TdWJtZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5YPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NzEwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLldpZGdldC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6OkNvbW1vblBhcmFtIyMjQWN0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+UHVibGljRkFRRXhwbG9yZXI8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUS48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlPjwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkZBUTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249UHVibGljRkFRRXhwbG9yZXI8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+PC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5YPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NDAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLldpZGdldC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVJTUyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgRkFRLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpJdGVtOjpIVE1MIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6Okl0ZW08L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVNZXRhSGVhZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpBZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZU1ldGFIZWFkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkN1c3RvbWVyRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkN1c3RvbWVyRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlTWV0YUhlYWQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YTo6UHVibGljRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0IyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hlcmUgdGhlICdJbnNlcnQgRkFRJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWJ1ZyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGVtcGxhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldENsb3NlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Q29tcG9zZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0RW1haWxPdXRib3VuZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEZvcndhcmQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRGcmVlVGV4dCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE5vdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRPd25lciI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBlbmRpbmciPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQaG9uZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFByaW9yaXR5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UmVzcG9uc2libGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6T3V0cHV0RmlsdGVyVGV4dEF1dG9MaW5rIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpXZWI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVnRXhwIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPihGQVEpWyNcc10qPzEoXGR7NH0pPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVSTDEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRGVzY3JpcHRpb24iPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPi9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSZsdDtNQVRDSDImZ3Q7PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltYWdlIj4vb3Rycy13ZWIvc2tpbnMvQWdlbnQvZGVmYXVsdC9pbWcvaGVscC1zbWFsbC5wbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5fYmxhbms8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OZXcgRkFRIEFydGljbGU8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUFkZDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PkE8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MjA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQWdlbnQuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgRWRpdC48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkFnZW50LkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxX2FkbWluPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxX2FkbWluPC9Hcm91cD4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZSBNYW5hZ2VtZW50PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlIE1hbmFnZW1lbnQ8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5MPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTQwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcV9hZG1pbjwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYS48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwPmZhcV9hZG1pbjwvR3JvdXA+CiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnkgTWFuYWdlbWVudDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeSBNYW5hZ2VtZW50PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudEZBUUNhdGVnb3J5PC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+QzwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjk1MDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5GQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxUaXRsZSBUcmFuc2xhdGFibGU9IjEiPkZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8TGluaz5BY3Rpb249QWdlbnRGQVFTZWFyY2g8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPExpbmtPcHRpb24+b25jbGljaz0iQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRGQVFTZWFyY2gnKTsgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfSBlbHNlIHsgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7IH0gcmV0dXJuIGZhbHNlOyI8L0xpbmtPcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxOYXZCYXI+RkFRPC9OYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5mPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+OTYwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6U2VhcmNoIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlNlYXJjaFJvdXRlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJeKD86QWdlbnR8QWRtaW4pRkFRIj5BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJOYW1lU2hvcnQiPlM8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1Nob3dDb2x1bW5zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJMYW5ndWFnZSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3RXhwbG9yZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFeHBsb3JlcjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0ludmFsaWRGQVFJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0V4cGxvcmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNGQVFPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpQcmVmZXJlbmNlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29sdW1uIiBUcmFuc2xhdGFibGU9IjEiPk90aGVyIFNldHRpbmdzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5TZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIwIj4yMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyNSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjM1Ij4zNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlVzZXJGQVFPdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxHcm91cFJvPmZhcTwvR3JvdXBSbz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkFnZW50LlRpY2tldENvbXBvc2UuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkFnZW50LkZBUVpvb20uanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5Db3JlLlVJLlRhYmxlLlNvcnQuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+Q29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFSaWNoVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8R3JvdXBSbz5mYXE8L0dyb3VwUm8+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQUpBWCBSZXNwb25kZXI8L1RpdGxlPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMDAtQmFjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5bJSBFbnYoIkxhc3RTY3JlZW5PdmVydmlldyIpICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDEwLUVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO1NjcmVlblR5cGU9UG9wdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDIwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeSBvZiB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMzAtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50IHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRUHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUVByaW50O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludF9GQVEiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA0MC1MaW5rIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpNZW51TW9kdWxlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkxpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkxpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudExpbmtPYmplY3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA1MC1EZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkNvbmZpcm1hdGlvbkRpYWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRWxlbWVudFNlbGVjdG9yIj4jWyUgRGF0YS5NZW51SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaWFsb2dDb250ZW50UXVlcnlTdHJpbmciPkFjdGlvbj1BZ2VudEZBUURlbGV0ZTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO1N1YmFjdGlvbj1EZWxldGU7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nVGl0bGUiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0gWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVyIEZBUSBab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8Q1NTPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkZBUVpvb20uY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkN1c3RvbWVyLkZBUVpvb20uanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRIHNlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIEZBUTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPFR5cGU+U3VibWVudTwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPkZBUTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8TGlua09wdGlvbj48L0xpbmtPcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc0tleT5mPC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NzgwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj40MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUaXRsZSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRkFRSUQiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJDYXRlZ29yeSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iTGFuZ3VhZ2UiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlN0YXRlIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkRvd24iPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iVXAiPlVwPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFQcmludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPEdyb3VwPmZhcTwvR3JvdXA+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgUHJpbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZSBUcmFuc2xhdGFibGU9IjEiPlByaW50PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8VGl0bGU+PC9UaXRsZT4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVyIEZBUSBQcmludC48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxUaXRsZSBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYTwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz48L0Jsb2NrPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPjwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1QdWJsaWNGQVFTZWFyY2g8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPExpbmtPcHRpb24+PC9MaW5rT3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+PC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+NjAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVE6OlZpZXdGQVFTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IlRpdGxlIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJGQVFJRCI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IkNhdGVnb3J5Ij5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJMYW5ndWFnZSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iU3RhdGUiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iRG93biI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJVcCI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPENTUz5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxDU1M+RkFRLkZBUVpvb20uY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+RkFRLkN1c3RvbWVyLkZBUVpvb20uanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxUaXRsZT48L1RpdGxlPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBQcmludC48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+RkFRPC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUpvdXJuYWwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9UaXRsZT4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPkZBUTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxOYXZCYXI+CiAgICAgICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBKb3VybmFsPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPkpvdXJuYWw8L05hbWU+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50RkFRSm91cm5hbDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5GQVE8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5Pko8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz45MzA8L1ByaW8+CiAgICAgICAgICAgICAgICA8L05hdkJhcj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUpvdXJuYWwjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0pvdXJuYWw8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRSm91cm5hbCMjI0pvdXJuYWxMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Sm91cm5hbDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdKb3VybmFsPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj41MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjRkFRSm91cm5hbE92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6UHJlZmVyZW5jZXM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbHVtbiIgVHJhbnNsYXRhYmxlPSIxIj5PdGhlciBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5TZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0LjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPkZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRSm91cm5hbE92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkpvdXJuYWxPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUUpvdXJuYWxPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9Ik5hbWUiPlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5mYXE8L0dyb3VwPgogICAgICAgICAgICAgICAgPEdyb3VwUm8+ZmFxPC9Hcm91cFJvPgogICAgICAgICAgICAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRGVsZXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8R3JvdXA+ZmFxPC9Hcm91cD4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZBUSBEZWxldGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZSBUcmFuc2xhdGFibGU9IjEiPkRlbGV0ZTwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5GQVE8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjSW5zZXJ0TWV0aG9kIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRDb21wb3NlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSJGdWxsIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJGdWxsIj5GdWxsIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUZXh0Ij5UZXh0IE9ubHk8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI0luY2x1ZGVJbnRlcm5hbCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0Q29tcG9zZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93RmllbGROYW1lcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRCdXR0b24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRDb21wb3NlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1Nob3dJbnNlcnRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRBbmRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgVGV4dCAmYW1wOyBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJmFtcDsgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldENvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjVXBkYXRlQXJ0aWNsZVN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0Q29tcG9zZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6Ok11bHRpTGFuZ3VhZ2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpEZWZhdWx0OjpMYW5ndWFnZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+ZW48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25DU1MjIyMyMDAtRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgQ1NTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6V2ViPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMjAwLUZBUSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIEpTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6V2ViPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LlRpY2tldENvbXBvc2UuanM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTG9hZGVyOjpDdXN0b21lcjo6Q29tbW9uQ1NTIyMjMjAwLUZBUSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIENTUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPk9UUlNDdXN0b21lclBvcnRhbDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OldlYjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDwhLS0gQm90aCBjYW4gYmUgbW92ZWQgaW4gT1RSUyA2IHRvIHRoZSBDdXN0b21lclRpY2tldE1lc3NhZ2UgZnJvbnRlbmQgLS0+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuUmVsYXRlZEFydGljbGVzLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OlZvdGluZyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIiBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpDYWNoZVRUTCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+MTcyODAwPC9TdHJpbmc+IDwhLS0gZGVmYXVsdCAxNzIsODAwICg2MCAqIDYwICogMjQgKiAyKSAtLT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OC1GQVEtTGFzdENoYW5nZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpEYXNoYm9hcmQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iVGl0bGUiPkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TGFzdENoYW5nZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPmZhcTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwMzk5LUZBUS1MYXN0Q3JlYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkRhc2hib2FyZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJUaXRsZSI+TGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5MYXN0Q3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudFNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+ZmFxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgoKICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpMYW5ndWFnZUxpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkxhbmd1YWdlTGlzdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QdWJsaWNDYXRlZ29yeUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6OlB1YmxpY0ZBUUdldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHVibGljRkFRR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Wm9vbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDR9JCI+MTAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Wm9vbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDV9JCI+MjUwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjEwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0TWF4IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3Wm9vbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDV9JCI+MjUwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRQWRkIyMjUmljaFRleHRXaWR0aCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0FkZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5cZCslPyQiPjYyMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRQWRkIyMjUmljaFRleHRIZWlnaHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3QWRkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlxkKyU/JCI+MzIwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFZGl0IyMjUmljaFRleHRXaWR0aCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0VkaXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeXGQrJT8kIj42MjA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUVkaXQjIyNSaWNoVGV4dEhlaWdodCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdFZGl0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlxkKyU/JCI+MzIwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6OlRvb2xCYXJNb2R1bGUjIyM5MC1GQVE6OkFnZW50RkFRQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRvb2xCYXJNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VG9vbEJhcjo6TGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSIgS2V5PSJOYW1lIj5BZGQgRkFRIGFydGljbGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDc3NDbGFzcyI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJY29uIj5mYSBmYS1xdWVzdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjEwMjAwOTA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBvYmplY3QgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGU6OlJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpPdmVydmlld1NtYWxsIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0FkZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFZGl0IyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld0VkaXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRWm9vbSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3Wm9vbTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFab29tIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdab29tPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFab29tIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpQdWJsaWM6OkZBUTo6Vmlld1pvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdQcmludDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFQcmludCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1ByaW50PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFQcmludCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3UHJpbnQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRT3ZlcnZpZXcjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUU92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NlYXJjaENTVkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpDdXN0b21lcjo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFPdmVydmlldyMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpGQVFPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjRnVsbHRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNOdW1iZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNUaXRsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0tleXdvcmQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNMYW5ndWFnZUlEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0NhdGVnb3J5SURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjVmFsaWRJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNTdGF0ZUlEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI1ZvdGVTZWFyY2hUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjUmF0ZVNlYXJjaFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNBcHByb3ZlZFNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0NyZWF0ZWRVc2VySURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjTGFzdENoYW5nZWRVc2VySURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZBUTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZz48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjSXRlbUNyZWF0ZVRpbWVQb2ludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0l0ZW1DcmVhdGVUaW1lU2xvdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0l0ZW1DaGFuZ2VUaW1lUG9pbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNJdGVtQ2hhbmdlVGltZVNsb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OkZBUTo6Vmlld1NlYXJjaDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdTZWFyY2g8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OlB1YmxpYzo6RkFROjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsM30kIj41MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OkNvbXBsZXhUYWJsZTo6U2V0dGluZ3NWaXNpYmlsaXR5IyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRGQVFab29tPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkxpbmtPYmplY3Q6OkNvbXBsZXhUYWJsZSMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUS5wbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUU51bWJlciI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+MjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5TmFtZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBcHByb3ZlZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250ZW50VHlwZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUU51bWJlciI+MTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xMTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjEyMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkIj4xMzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnlOYW1lIj4xNDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE1MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBcHByb3ZlZCI+MTYwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRlbnRUeXBlIj4xNzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MTgwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6Q3VzdG9tZXI6OlJlbGF0ZWRBcnRpY2xlczo6RW5hYmxlZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCMjI091dHB1dEZpbHRlclBvc3RGQVFSZWxhdGVkQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6OkZBUVJlbGF0ZWRBcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGVtcGxhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclRpY2tldE1lc3NhZ2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXM8L1RpdGxlPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6S2V5d29yZEFydGljZUxpc3Q6OlNlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+NTAwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzIyMjUXVldWVzRW5hYmxlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1JlbGF0ZWRBcnRpY2xlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlJhdzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI0RlZmF1bHRMYW5ndWFnZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RkFRPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVE6OlZpZXdSZWxhdGVkQXJ0aWNsZXM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5lbjwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI1Nob3dMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1JlbGF0ZWRBcnRpY2xlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+MTA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI1ZvdGVTdGFyc1Zpc2libGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlICcwJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GQVE8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUTo6Vmlld1JlbGF0ZWRBcnRpY2xlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+NDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KPC9vdHJzX2NvbmZpZz4K
CnJlcXVpcmUgNTsKcGFja2FnZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwp1c2Ugc3RyaWN0Owp1c2UgQ2FycCAoKTsKcmVxdWlyZSBFeHBvcnRlcjsKdXNlIHZhcnMgcXcoCiAgQEVYUE9SVCAlRVhQT1JUX1RBR1MgQElTQSAkVkVSU0lPTgogICVFbnRpdGllcyAlV2luTGFtZUVudGl0aWVzICVDb21tb25FbnRzICRNSU1FX1R5cGUgCiAgJERURF91cmwgJERURF9wdWJpZCAkTmF0aXZpemVfbmV3bGluZXMgJERXSU0gQEhpZGllcyAkUlNTX29iagogICRTbGVlcHkgJUlzQmxvY2tNYXJrdXAgJE1heWJlSW5kZW50ICRNYXliZU5MICVQZXJpb2RBc1NlY29uZHMKICAkTkFNRVNQQUNFX1NZICRDSFVOS19NSU5VVEVTICVCYWRQb3J0cwogIEBSZXRyeV9kZWxheXMgJFVzZXJBZ2VudFN0cmluZwopOwoKJFZFUlNJT04gPSAnMTEuMTEnOwpCRUdJTiB7ICpERUJVRyA9IHN1YiAoKSB7MH0gdW5sZXNzIGRlZmluZWQgJkRFQlVHOyB9ICAgIyBzZXQgREVCVUcgbGV2ZWwKCkBJU0EgPSBxdyhFeHBvcnRlcik7CgojJERURF91cmwgICB8fD0gJ2h0dHA6Ly9teS5uZXRzY2FwZS5jb20vcHVibGlzaC9mb3JtYXRzL3Jzcy0wLjkxLmR0ZCc7CiMkRFREX3B1YmlkIHx8PSAnLS8vTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMvL0RURCBSU1MgMC45MS8vRU4nOwokTkFNRVNQQUNFX1NZIHx8PSAnaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9zeW5kaWNhdGlvbi8nOwokQ0hVTktfTUlOVVRFUyA9IDEwOwoKJE5hdGl2aXplX25ld2xpbmVzID0gMSB1bmxlc3MgZGVmaW5lZCAkTmF0aXZpemVfbmV3bGluZXM7CiREV0lNID0gMSB1bmxlc3MgZGVmaW5lZCAkRFdJTTsKJFNsZWVweSA9CiAkRU5WeydNQUlMVE8nfSA/IDQgICMgdW5kZXIgY3JvbnRhYgogOiAoJEVOVnsnVEVSTSd9IHx8ICRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gfHwgJEVOVnsnQ09NU1BFQyd9ICkgPyAwCiAgICAjIGFsbW9zdCBkZWZpbml0ZWx5IG5vdCB1bmRlciBjcm9udGFiCiA6IDQgICB1bmxlc3MgZGVmaW5lZCAkU2xlZXB5OwpAUmV0cnlfZGVsYXlzID0gKDQsIDEwLCAyMCwgNDApOwokTWF5YmVJbmRlbnQgPSAnICAnOwokTWF5YmVOTCA9ICJcbiI7CiMkTWF5YmVOTCA9ICRNYXliZUluZGVudCA9ICcnOyAgIyB0ZXJzZXIsIG1vcmUgZ3JlcC13b3J0aHkKCmZvcmVhY2ggbXkgJHAgKCAgIyBwb3J0cyB3ZSdsbCByZWZ1c2UgdG8gZG8gSFRUUCBvbgpxdzwwIDEgNyA5IDExIDEzIDE1IDE3IDE5IDIwIDIxIDIyIDIzIDI1IDM3IDQyIDQzIDUzIDcwIDc5IDk1IDEwMSAxMDIgMTAzCiAgMTA0IDEwNyAxMDkgMTEwIDExMSAxMTMgMTE1IDExNyAxMTkgMTIzIDEzNSAxMzcgMTM4IDEzOSAxNDMgMzg5IDQ0MyA1MTIKICA1MTMgNTE0IDUxNSA1MTcgNTE4IDUyNiA1MzAgNTMxIDUzMiA1NDAgNTU2IDY2NjcKPikgeyAkQmFkUG9ydHN7JHB9ID0gMSB1bmxlc3MgZGVmaW5lZCAkQmFkUG9ydHN7JHB9OyB9CgokVXNlckFnZW50U3RyaW5nIHx8PSAiWG1sUnNzU2ltcGxlR2VuLyRWRVJTSU9OIjsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpzdWIgX2hpZGUge3B1c2ggQEhpZGllcywgQF8gfTsKX2hpZGUgcXcoaW5pdCBpbXBvcnQpOwoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoKPWhlYWQxIE5BTUUKClhNTDo6UlNTOjpTaW1wbGVHZW4gLSBmb3Igd3JpdGluZyBSU1MgZmlsZXMKCj1oZWFkMSBTWU5PUFNJUwoKICAjIEEgY29tcGxldGUgc2NyZWVuLXNjcmFwZXIgYW5kIFJTUyBnZW5lcmF0b3IgaGVyZToKICAKICB1c2Ugc3RyaWN0OwogIHVzZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwogIG15ICR1cmwgPSBxPGh0dHA6Ly93d3cuZXhpbGUucnUvPjsKICAKICByc3NfbmV3KCAkdXJsLCAiZVhpbGUiLCAiTW9zY293LWJhc2VkIEFsdGVybmF0aXZlIE5ld3NwYXBlciIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICByc3Nfd2VibWFzdGVyKCAneHh4eHhAeW91cmRvbWFpbi5jb20nICk7CiAgcnNzX3R3aWNlX2RhaWx5KCk7CiAgCiAgZ2V0X3VybCggJHVybCApOwogIAogIHdoaWxlKAogICBtezxoND5ccyo8YSBocmVmPScvKC4qPyknLio/PiguKj8pPC9hPlxzKjwvaDQ+XHMqPHAuKj8+KC4qPyk8YSBocmVmPScvfXNnCiAgKSB7CiAgICByc3NfaXRlbSgiJHVybCQxIiwgJDIsICQzKTsKICB9CiAgCiAgZGllICJObyBpdGVtcyBpbiB0aGlzIGNvbnRlbnQ/ISB7e1xuJF9cbn19XG5BYm9ydGluZyIKICAgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CiAgCiAgcnNzX3NhdmUoICdleGlsZS5yc3MnLCA0NSApOwogIGV4aXQ7Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIGlzIGZvciB3cml0aW5nIFJTUyBmaWxlcywgc2ltcGx5LiBJdCB0cmFuc3BhcmVudGx5IGhhbmRsZXMKYWxsIHRoZSB1bnBsZWFzYW50IGRldGFpbHMgb2YgUlNTLCBsaWtlIHByb3BlciBYTUwgZXNjYXBpbmcsIGFuZCBhbHNvIGhhcwphIGdvb2QgbnVtYmVyIG9mIERvLVdoYXQtSS1NZWFuIGZlYXR1cmVzLCBsaWtlIG5vdCBjaGFuZ2luZyB0aGUgbW9kdGltZQpvbiBhIHdyaXR0ZW4tb3V0IFJTUyBmaWxlIGlmIHRoZSBmaWxlIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQsIGFuZCBsaWtlCmF1dG9tYXRpY2FsbHkgcmVtb3ZpbmcgYW55IEhUTUwgdGFncyBmcm9tIGNvbnRlbnQgeW91IG1pZ2h0IHBhc3MgaW4uCgpUaGlzIG1vZHVsZSBpc24ndCBtZWFudCB0byBoYXZlIHRoZSBmdWxsIGV4cHJlc3NpdmUgcG93ZXIgb2YgUlNTOwppbnN0ZWFkLCBpdCBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9zdCBjb21tb25seSBuZWVkZWQgYnkKUlNTLXdyaXRpbmcgcHJvZ3JhbXMuCgo9aGVhZDEgSU5URVJGQUNFCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3Igc3RhcnRpbmcgYW4gUlNTIGZlZWQgaW4KbWVtb3J5LCBwdXR0aW5nIGl0ZW1zIGludG8gaXQsIGFuZCBzYXZpbmcgaXQgdG8gZGlzayAob3IgcHJpbnRpbmcgaXQgYXMKYSBzdHJpbmcsIGFzIGluIGEgQ0dJKS4gSWYgeW91IHByZWZlciBhbiBvYmplY3Qtb3JpZW50ZWQgaW50ZXJmYWNlCihvYnZpb3VzbHkgbW9yZSB1c2VmdWwgaWYgeW91J3JlIGNvbXBvc2luZyBzZXZlcmFsIGZlZWRzIGF0IG9uY2UpLCB0aGVuCnlvdSBjYW4gdXNlIHRoaXMgbW9kdWxlIGFzIGEgY2xhc3Mgd2hvc2UgbWV0aG9kcyBhcmUgdGhlIHNhbWUgYXMgdGhlCmZ1bmN0aW9uIG5hbWVzIG1pbnVzICJyc3NfIi4gRXhjZXB0IGZvciB0aGlzIGRldGFpbCBvZiB0aGUgbmFtaW5nLCB0aGUKZnVuY3Rpb25zIGFuZCBtZXRob2RzIGFyZSB0aGUgc2FtZSwgYmVoYXZlIHRoZSBzYW1lLCBhbmQgdGFrZSB0aGUgc2FtZQphcmd1bWVudHMuCgpUaGF0IGlzLCB0aGlzIGZ1bmN0aW9uYWwgY29kZToKCiAgdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW47CiAgbXkgJHVybCA9IHE8aHR0cDovL3d3dy5leGlsZS5ydS8+OwogIAogIHJzc19uZXcoICR1cmwsICJlWGlsZSIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICBnZXRfdXJsKCAkdXJsICk7CiAgLi4uCgpkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhpcyBPTyBjb2RlOgoKICB1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiAoKTsKICBteSAkdXJsID0gcTxodHRwOi8vd3d3LmV4aWxlLnJ1Lz47CiAgbXkgJHJzcyA9IFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyggJHVybCwgImVYaWxlIik7CiAgJHJzcy0+bGFuZ3VhZ2UoICdlbicgKTsKICAkcnNzLT5nZXRfdXJsKCAkdXJsICk7CiAgLi4uCgooTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBDPGdldF91cmw+IGRvZXNuJ3QgaGF2ZSBhIGxlYWRpbmcgInJzc18iLApzbyBpdHMgbWV0aG9kIG5hbWUgaXMgdGhlIHNhbWUgYXMgaXRzIGZ1bmN0aW9uIG5hbWUuICBJdCdzIHRoZQpvbmUgZXhjZXB0aW9uLikKCklmIHRoaXMgdGFsayBvZiBvYmplY3RzIHB1enpsZXMgeW91LCBzZWUgCkw8SFRNTDo6VHJlZTo6QWJvdXRPYmplY3RzPiBpbiB0aGUgQzxIVE1MLVRyZWU+IGRpc3QsIGFuZC9vciBzZWUKdGhlIGNoYXB0ZXIgIlVzZXIncyBWaWV3IG9mIE9iamVjdC1PcmllbnRlZCBNb2R1bGVzIgppbiBteSBib29rIEk8UGVybCAmIExXUD4gKEw8aHR0cDovL3d3dy5hbWF6b24uY29tL2V4ZWMvb2JpZG9zL0FTSU4vMDU5NjAwMTc4OT4pLgooVGhlIGJvb2sgaXMgYWxzbyB1c2VmdWwgYXMgYW4gZXh0ZW5kZWQgZGlzY3Vzc2lvbiBvZiBzY3JlZW4tc2NyYXBpbmcuKQoKTm90ZTogaW4gdGhlIGNvZGUgYmVsb3csIEkgdXNlIHRoZSB3b3JkICJhY2Nlc3NvciIgYSBsb3QsIHRvIHJlZmVyCnRvIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgeW91IGNhbiBjYWxsIHR3byBwb3NzaWJsZSB3YXlzOgoxKSBsaWtlIEM8Zm9vKEk8dmFsPik+IHRvIHNldCB0aGUgImZvbyIgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBJPHZhbD4sCm9yIDIpIGxpa2UgQzxmb28oKT4gdG8gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgImZvbyIgYXR0cmlidXRlLgoKCj1oZWFkMSBGVU5DVElPTlMKCj1vdmVyCgo9aXRlbSBDPHJzc19uZXcoIEk8dXJsPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+Cgo9aXRlbSBJPG9yOj4gQzw8ICRyc3MgPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoLi4uKTsgPj4KClRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBSU1MgZmVlZCBpbiBtZW1vcnkuICBUaGlzIHNob3VsZCBiZSB0aGUgZmlyc3QKQzxyc3NfSTx3aGF0ZXZlcj4+IGZ1bmN0aW9uIHlvdSBjYWxsIGluIHlvdXIgcHJvZ3JhbS4gIElmIHlvdSBjYWxsIGl0CmFnYWluLCBpdCBlcmFzZXMgdGhlIGN1cnJlbnQgb2JqZWN0IChpZiBhbnkpIGFuZCBzZXRzIHVwIGEgbmV3IG9uZSBhY2NvcmRpbmcKdG8gd2hhdGV2ZXIgcGFyYW1ldGVycyB5b3UgcGFzcy4KClRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUgZnVsbCBVUkwsIHRoZSB0aXRsZSwgYW5kIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUKc2l0ZSAob3IgcGFnZSkgdGhhdCB5b3UncmUgcHJvdmlkaW5nIGFuIFJTUyBmZWVkIG9mLiBUaGUgZGVzY3JpcHRpb24gaXMKb3B0aW9uYWwsIGJ1dCB5b3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYSBVUkwgYW5kIHRpdGxlLgoKRXhhbXBsZXM6CgogIHJzc19uZXcoICR1cmwsICJlWGlsZSIsICJNb3Njb3ctYmFzZWQgQWx0ZXJuYXRpdmUgTmV3c3BhcGVyIiApOwoKICByc3NfbmV3KCAnaHR0cDovL3d3dy5teWJhem91a2kuY29tL25ld3MvJywgIkJhem91a2kgTmV3cyEiICk7CgooQXMgYSBtZXRob2QsIFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyBzaW1wbHkgcmV0dXJucyBhIG5ldwpSU1Mgb2JqZWN0LikKCj1jdXQKCnN1YiBuZXcgewogIG15ICRjbGFzcyA9IHNoaWZ0OwogICRjbGFzcyA9IHJlZigkY2xhc3MpIHx8ICRjbGFzczsKICBteSAkbmV3ID0gYmxlc3MgeyAnaXRlbXMnID0+IFtdIH0sICRjbGFzczsKICAkbmV3LT5pbml0KCk7CgogIEBfIGFuZCAkbmV3LT51cmwoc2hpZnQpOwogIEBfIGFuZCAkbmV3LT50aXRsZShzaGlmdCk7CiAgQF8gYW5kICRuZXctPmRlc2NyaXB0aW9uKHNoaWZ0KTsKCiAgJG5ldy0+aXRlbV9saW1pdCggMCApOwogICRuZXctPnJldGVudGlvbiggMzIgKiAyNCAqIDYwICogNjAgKTsgIyAzMiBkYXlzCgojICAoLWUgInJzcy5jc3MiKSA/ICRuZXctPmNzcygiLi9yc3MuY3NzIikKIyAgICA6ICRuZXctPmNzcygiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9yc3MuY3NzIik7CgojICAoLWUgImFib3V0X3Jzcy5odG1sIikgPyAkbmV3LT5kb2NzKCIuL2Fib3V0X3Jzcy5odG1sIikKIyAgICA6ICRuZXctPmRvY3MoImh0dHA6Ly93d3cuaW50ZXJnbGFjaWFsLmNvbS9yc3MvYWJvdXQuaHRtbCIpOwoKICByZXR1cm4gJG5ldzsKfQoKc3ViIGluaXQgeyByZXR1cm47IH0gICAjIG92ZXJyaWRlIGluIHN1YmNsYXNzIGFzIG5lY2Vzc2FyeQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCl9fUEFDS0FHRV9fLT5fYWNjZXNzb3JpemUoCiBxdygKICB0aXRsZSBkZXNjcmlwdGlvbiB1cmwgbGFuZ3VhZ2UgY3NzIHhzbCB3ZWJNYXN0ZXIgZG9jcwogIGl0ZW1fbGltaXQgdHRsCiByZXRlbnRpb24KICBhbGxvd19kdXBsaWNhdGVzCiAgaW1hZ2VfdGl0bGUgaW1hZ2VfbGluayBpbWFnZV91cmwgaW1hZ2Vfd2lkdGggaW1hZ2VfaGVpZ2h0IGltYWdlX2Rlc2NyaXB0aW9uIAogKQopOwoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2xhbmd1YWdlKEk8bGFuZ3VhZ2VfdGFnPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgbGFuZ3VhZ2UgdGhpcyBSU1MgZmVlZCBpcyBpbi4gIEl0IG11c3QgYmUKYW4gUkZDMzA2Ni1zdHlsZSBsYW5ndWFnZSB0YWdzIGxpa2UgImVuIiwgb3IgImVuLVVTIiwgb3IgInpoLVRXIi4KKFNlZSBJPEkxOE46OkxhbmdUYWdzOjpMaXN0PiBmb3IgYSBsaXN0LikKSWYgeW91IGRvbid0IHNldCB0aGUgZmVlZCdzIGxhbmd1YWdlLCBpdCBkZWZhdWx0cyB0byAiZW4iLCBmb3IgZ2VuZXJpYyBFbmdsaXNoLgoKSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRob3V0IGEgcGFyYW1ldGVyLCBpdCByZXR1cm5zCnRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSU1MgZmVlZCdzIGxhbmd1YWdlLiAgRm9yIGV4YW1wbGU6CgogIHByaW50ICJJJ20gbWFraW5nIGFuIFJTUyBmZWVkIGZvciAiLCByc3NfbGFuZ3VhZ2UoKSwgIiFcbiI7CgpUaGUgc2FtZSBpcyB0cnVlIGZvciBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IEkgbGFiZWwgYXMgImFjY2Vzc29ycyIuCgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2l0ZW1fbGltaXQoSTxudW1iZXI+KT4KClRoaXMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCB0aGlzIGZlZWQgd2lsbCBzaG93LgoKVGhlIGRlZmF1bHQgdmFsdWUgaXMgMCwgbWVhbmluZyB0aGF0IHRoZXJlIGlzIG5vIG1heGltdW0uCgpJZiB5b3Ugc2V0IGl0IHRvIGEgcG9zaXRpdmUgbnVtYmVyIEk8Tj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGZpcnN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LiAoT3IsIGlmIHlvdSBzZXQKQzxyc3NfaGlzdG9yeV9maWxlPiwgdGhlbiB0aGUgbmV3ZXN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZQp3aXRoIEM8cnNzX2l0ZW0+LikKCklmIHlvdSBzZXQgaXQgdG8gYSBuZWdhdGl2ZSBudW1iZXIgSTwtTj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGxhc3QgSTxOPiBpdGVtcyB0aGF0IHlvdSBkZWNsYXJlIHdpdGggQzxyc3NfaXRlbT4uIChPciwgaWYgeW91IHNldApDPHJzc19oaXN0b3J5X2ZpbGU+LCB0aGVuIHRoZSBvbGRlc3QgSTxOPiBpdGVtcyB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LAp3aGljaCBpcyB1bmxpa2VseSB0byBiZSB1c2VmdWwhKQoKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc193ZWJNYXN0ZXIoSTxlbWFpbC1hZGRyZXNzPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgZW1haWwgYWRkcmVzcyB5b3UsIHRoZSBSU1MgZ2VuZXJhdG9yIG1hbmFnZXIsIGNhbiBiZQpyZWFjaGVkIGF0LiAgRXhhbXBsZToKCiAgcnNzX3dlYk1hc3RlciggJ3NidXJrZUBiYXpvdWtpLW5ld3MuaW50JyApOwoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19oaXN0b3J5X2ZpbGUoIEk8ZmlsZW5hbWU+ICk+CgpUaGlzIGRlY2xhcmVzIHRoYXQgeW91IHdhbnQgdGhpcyBSU1MgZmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoYXQgaXRlbXMgYXJlCm5ldywgYW5kIHRvIGxpc3QgdGhlbSBmaXJzdCB3aGVuIHRoZSBSU1MgaXMgZW1pdHRlZC4gIFRvIGRvIHRoaXMsIHRoZSBSU1MKZ2VuZXJhdG9yIGhhcyB0byBzdG9yZSBpbmZvcm1hdGlvbiBpbiBhIGZpbGUsIHdoZXJlIGl0IHRyYWNrcyBpdHMgImhpc3RvcnkiLAppLmUuLCB3aGVuIHdhcyB0aGUgZmlyc3QgdGltZSBpdCBzYXcgZ2l2ZW4gVVJMcywgYW5kIHRoZSBtb3N0IHJlY2VudCB0aW1lCml0IHNhdyBnaXZlbiBVUkxzLgoKVHlwaWNhbCB1c2FnZSBpczoKCiAgcnNzX2hpc3RvcnlfZmlsZSggJ3RoaXNyc3NmZWVkLmRhdCcgKTsKCllvdSBzaG91bGQgY2FsbCBDPHJzc19oaXN0b3J5X2ZpbGU+IEk8YmVmb3JlPiB5b3UgbWFrZSBhbnkgY2FsbHMgdG8KQzxyc3NfaXRlbT4uCgpUaGUgaGlzdG9yeS1maWxlIGZlYXR1cmUgaXMgbWVhbnQgZm9yIGNhc2VzIHdoZXJlIHlvdXIgUlNTLWdlbmVyYXRvcgpwcm9ncmFtIGNhbGxzIEM8cnNzX2l0ZW0+IG9uIEk8ZXZlcnk+IGxpbmsgaXQgc2VlcywgYnV0IG9ubHkgd2FudHMgdGhlCkk8bmV3PiBsaW5rcyB0byBhcHBlYXIgaW4gdGhlIFJTUyBvdXRwdXQuIChUaGlzIGNhbiBiZSBhIGdvb2QgYXBwcm9hY2gKaWYgeW91J3JlIG1ha2luZyBhbiBSU1MgZmVlZCBvZiBhIHBhZ2UgbGlrZQpDPGh0dHA6Ly93d3cuZ3VhcmRpYW4uY28udWsvPiB3aGVyZSB0aGVyZSdzIHNvbWUgbmV3IGxpbmtzICh0byB0aGUKcmVjZW50bHkgYWRkZWQgc3RvcmllcyksIGJ1dCBhbHNvIGxpbmtzIHRvIHNvbWUgZGF5cy1vbGQgc3RvcmllcywgYW5kCkk8YWxzbz4gbGlua3MgdG8gc29tZSBhbHdheXMtdGhlcmUgdGhpbmdzIGxpa2UgIkFyY2hpdmUgU2VhcmNoIiBhbmQKIkNvbnRhY3QgVXMiIHBhZ2VzLgoKT25jZSB5b3UgY2FsbCByc3NfaGlzdG9yeV9maWxlLCB0aGUgc3BlY2lmaWVkIGZpbGUgaXMgcmVhZCBpbi4gIFRoZQppbi1tZW1vcnkgaGlzdG9yeSAoc3RvcmVkIGluIHRoZSBSU1Mgb2JqZWN0KSBpcyB1cGRhdGVkIGFzIHlvdQpjYWxsIEM8cnNzX2l0ZW0+LiAgQnV0IHRoZSBmaWxlIGlzbid0IHVwZGF0ZWQgdW50aWwgeW91IGNhbGwgcnNzX3NhdmUuCgooQSBkby13aGF0LUktbWVhbiBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nIEM8cnNzX2hpc3RvcnlfZmlsZT4gaXMgdGhhdCBpdApzZXRzIHJzc19pdGVtX2xpbWl0IHRvIDI1IGlmIGl0IGlzIGN1cnJlbnRseSAwLikKCihJbmNpZGVudGFsbHksIGlmIHlvdSdyZSB1c2luZyByc3NfaGlzdG9yeV9maWxlIGFzIHBhcnQgb2YgYSBDR0kgdGhhdAplbWl0cyBSU1MgZGF0YSwgaW5zdGVhZCBvZiBhIHByb2dyYW0gdGhhdCBqdXN0IHNhdmVzIHRvIGFuIFJTUyBmaWxlLAp0aGVuIHRoaW5ncyB3aWxsIGdldCBjb21wbGljYXRlZC4gWW91J2xsIG5lZWQgdG8gY2FsbCBhbiBpbnRlcm5hbCBtZXRob2QKdG8gZXhwbGljaXRseSBjb21taXQgdGhlIGhpc3RvcnkgZmlsZSB0byBkaXNrLCBhbmQgeW91J2xsIG5lZWQgYQpzZW1hcGhvcmUgZmlsZSB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuIEVtYWlsIG1lIGZvciBmdWxsIGluZm8uKQoKPWN1dAoKc3ViIGhpc3RvcnlfZmlsZSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICByZXR1cm4gJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gdW5sZXNzIEBfOyAgICMgcmVhZCBhY2Nlc3Npb24KICBteSAkZmlsZSA9ICRfWzBdOwogIAogIHVubGVzcyhkZWZpbmVkICRmaWxlICBhbmQgIGxlbmd0aCAkZmlsZSAgYW5kICAkZmlsZSA9fiBtL1xTLykgewogICAgREVCVUcgYW5kIHByaW50ICJLaWxsaW5nICRzZWxmICdzIG1lbW9yeS1oaXN0b3J5LlxuIjsKICAgICAjIEkgZG9uJ3Qga25vdyBpZiB0aGlzJ2QgYmUgYWN0dWFsbHkgdXNlZnVsIGZvciBhbnl0aGluZyB0aG8uCiAgICBkZWxldGUgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ307CiAgICBkZWxldGUgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nIH07CiAgICBkZWxldGUgJHNlbGYtPnsnX2xhc3Rfc2VlbicgIH07CiAgICByZXR1cm4gdW5kZWY7CiAgfQogIAogIERFQlVHIGFuZCBwcmludCAiQ29uc2lkZXJpbmcgJGZpbGUgYXMgJHNlbGYgJ3MgaGlzdG9yeS5cbiI7CiAgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gPSAkZmlsZTsKICAkc2VsZi0+X3JlYWRfaGlzdG9yeV9maWxlOwogIAogICRzZWxmLT5pdGVtX2xpbWl0KCAyNSApIGlmICREV0lNIGFuZCAhJHNlbGYtPml0ZW1fbGltaXQoKTsKCiAgcmV0dXJuICRmaWxlOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybD4gKTs+Cgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybCwgdGl0bGU+ICk7PgoKPWl0ZW0gQzxyc3NfaXRlbSggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+CgpUaGlzIGFkZHMgYSBuZXcgaXRlbSB0byB0aGUgY3VycmVudCBmZWVkLiBZb3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgdGhlClVSTCB0byBhZGQgKGFuZCBpdCBzaG91bGQgYmUgYSB2YWxpZC1sb29raW5nIFVSTCwgc3RhcnRpbmcgd2l0aAoiSTxzb21ldGhpbmc6PiIsIGFuZCBub3QgY29udGFpbmluZyBhbnkgc3BhY2VzKS4gWW91IG1heSBhbHNvIHNwZWNpZnkKdGhlIHRpdGxlLCBidXQgaXQncyBvcHRpb25hbC4gQW5kIGZpbmFsbHksIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEKZGVzY3JpcHRpb24uIChZb3UgY2FuIHJlbWVtYmVyIHRoaXMgYmVjYXVzZSBpdCBzdGFydHMgd2l0aCB0aGUgZXNzZW50aWFsCml0ZW0gZmlyc3QsIGFuZCBwcm9ncmVzc2VzIHRvd2FyZCB0aGUgbW9zdCBvcHRpb25hbC4pCgpMZWFkaW5nIGFuZCB0YWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCBmcm9tIHdoaWNoZXZlciBvZiBJPHVybCwKdGl0bGUsPiBhbmQgSTxkZXNjcmlwdGlvbj4gYXJlIGRlZmluZWQgdmFsdWVzLCBhbmQgSFRNTCBpcyBwYXJzZWQgb3V0LgoKQSBzaW1wbGUgdXNhZ2U6CgogIHJzc19pdGVtKAogICAgImh0dHA6Ly93d3cuaGFycGVycy5vcmcvTW9zdFJlY2VudFdSLmh0bWwiLAogICAgIkhhcnBlcidzIE1hZ2F6aW5lJ3MgV2Vla2x5IFJldmlldyIKICApOwoKQWx0aG91Z2ggaW4gcHJhY3RpY2UsIGEgdHlwaWNhbCBjYWxsIHdvbid0IGhhdmUgc3RyaW5nIGNvbnN0YW50cywgYnV0CndpbGwgaW5zdGVhZCBiZSBsaWtlIHRoZSBleGFtcGxlIGluIHRoZSBMPFN5bm9wc2lzIHNlY3Rpb3N8LyJTWU5PUFNJUyI+LApuYW1lbHk6CgogIHJzc19pdGVtKCIkdXJsJDEiLCAkMiwgJDMpOwoKSW5jaWRlbnRhbGx5LCBhcyBhIGRvLXdoYXQtSS1tZWFuIGZlYXR1cmUsIGlmIHRoZSBmaXJzdCBwYXJhbWV0ZXIKZG9lc24ndCBsb29rIGxpa2UgYSBVUkwgYnV0IG9uZSBvZiB0aGUgb3RoZXJzIGRvZXMsIHRoZW4gdGhpcyBlcnJvciBpcwpzaWxlbnRseSBmb3JnaXZlbi4gIFRoaXMgaXMgc28geW91IGNhbiBvY2Nhc2lvbmFsbHkgc2xpcCB1cCBhbmQgZm9yZ2V0CnRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVycy4KCihJbiB0aGUgdW5saWtlbHkgZXZlbnQgd2hlcmUgeW91IEk8bmVlZD4gdG8gYXZvaWQgdGhlIEhUTUwtcmVtb3ZhbApmZWF0dXJlcywgeW91IGNhbiBkbyB0aGlzIGJ5IHBhc3Npbmcgc2NhbGFyLXJlZmVyZW5jZXMgaW5zdGVhZCBvZgpub3JtYWwgc3RyaW5ncywgbGlrZSBzbzogQzxyc3NfaXRlbSgkdXJsLCAkdGl0bGUsIFwkbm90X3RvX2JlX2VzY2FwZWQpPi4pCgo9Y3V0CgpzdWIgaXRlbSB7ICMgQWRkIGFuIGl0ZW06ICAodXJsLCB0aXRsZSwgZGVzY3JpcHRpb24pCiAgbXkoJHNlbGYsIEBwYXJhbXMpID0gQF87CiAgaWYoIGdyZXAgZGVmaW5lZCgkXykgJiYgbGVuZ3RoKCRfKSwgQHBhcmFtcyApIHsKICAgIHB1c2ggQHskc2VsZi0+eydpdGVtcyd9fSwKICAgICAgWwogICAgICAgICRzZWxmLT5fcHJvY2Vzc19pdGVtX3BhcmFtcyhAcGFyYW1zKSAgIyBEV0lNIHRoaW5ncyBoYXBwZW4gaGVyZQogICAgICBdCiAgICA7CiAgICBERUJVRyBhbmQgcHJpbnQgIkFkZGluZyBpdGVtICIsCiAgICAgam9pbigifCIsIEB7ICRzZWxmLT57J2l0ZW1zJ31bLTFdIH0pLCAiXG4iOwoKICAgICMgVXBkYXRlIGhpc3RvcnkuLi4KICAgIGlmKCAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9ICkgewogICAgICBteSAkdXJsID0gJHNlbGYtPnsnaXRlbXMnfVstMV1bMF07CiAgICAgIG15ICRub3cgPQogICAgICAgICAgICAkc2VsZi0+eydfdmlyZ2luX2l0ZW1fdGltZXN0YW1wJ30KICAgICAgICA/IC0tJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9CiAgICAgICAgOiB0aW1lKCkKICAgICAgOwogICAgICAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9eyR1cmx9IHx8PSAkbm93OwogICAgICAkc2VsZi0+eydfbGFzdF9zZWVuJyB9eyR1cmx9ICAgPSAkbm93OwogICAgfQoKICB9IGVsc2UgewogICAgREVCVUcgYW5kIHByaW50ICJOb3QgYWRkaW5nIGl0ZW0gLS0gZW1wdHkgcGFyYW1zXG4iOwogIH0KICByZXR1cm4gJHNlbGY7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaXRlbV9jb3VudCgpPgoKVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgeW91J3ZlIGRlY2xhcmVkLiAgSSBhbnRpY2lwYXRlIHRoYXQgaXRzCm1haW4gdXNhZ2Ugd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKCiAgZGllICJXaGF0LCBubyBvYmplY3RzIGZvdW5kIGF0ICR1cmwgPyEiCiAgIHVubGVzcyByc3NfaXRlbV9jb3VudCgpOwoKb3IsIG1heWJlLi4uCgogIGV4aXQgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CgouLi5kZXBlbmRpbmcgb24gaG93L3doZXRoZXIgeW91J2Qgd2FudCB0byByZWFjdCB0byBjYXNlcyB3aGVyZSB5b3UgZG9uJ3QKc2VlIGFueXRoaW5nIHRvIHB1dCBpbnRvIGFuIFJTUyBmZWVkLgoKTm90ZSB0aGF0IHRoZSBwYXJlbnMgYXJlIG9wdGlvbmFsLCBzaW5jZSB0aGlzIGNvbW1hbmQgdGFrZXMgbm8gb3B0aW9ucwooanVzdCBsaWtlIFBlcmwncyBDPHRpbWUoKT4gZnVuY3Rpb24pLgoKPWN1dAoKc3ViIGl0ZW1fY291bnQgIHsgc2NhbGFyIEB7ICRfWzBdLT57J2l0ZW1zJ30gfTsgfQpzdWIgaXRlbXNfY291bnQgeyBzaGlmdC0+aXRlbV9jb3VudCB9ICMgaGFybWxlc3MgYWxpYXMKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0IHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRzZWVuID0gJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfTsKCiAgJHNlZW4gb3IgQ2FycDo6Y29uZmVzcygKICAgIkNhbid0IHNvcnQgaXRlbXMgYnkgYWdlIHVubGVzcyB5b3UgZGVmaW5lIGEgaGlzdG9yeSBmaWxlISIpOwoKICBteSAkaXRlbXMgPSAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyI7CgogIGlmKCBERUJVRyApIHsKICAgIHByaW50ICJcblNvcnRpbmcgIiwgc2NhbGFyKEAkaXRlbXMpLCAiIGl0ZW1zLCBuZXdlc3QgZmlyc3QuICBBZ2UgZHVtcDpcbiI7CiAgICBmb3JlYWNoIG15ICRpIChAJGl0ZW1zKSB7CiAgICAgIGlmKCAkaS0+WzBdICkgewogICAgICAgIHByaW50ZiAiICAlcyA6ICVzICglcylcbiIsCiAgICAgICAgICRpLT5bMF0sICRzZWVuLT57JGktPlswXX0gfHwgMCwgc2NhbGFyIGxvY2FsdGltZSgKICAgICAgICAgICAgICAgICAgJHNlZW4tPnskaS0+WzBdfSB8fCAwKQogICAgICAgIDsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludCAiIE5PVVJMXG4iOwogICAgICB9CiAgICB9CiAgICBwcmludCAiIChubyBpdGVtcylcbiIgdW5sZXNzIEAkaXRlbXM7CiAgICBwcmludCAiKEVuZCBoaXN0b3J5IGR1bXAuKVxuXG4iOwogIH0KCiAgQCRpdGVtcyA9CiAgICBzb3J0IHsgKCRzZWVuLT57JGItPlswXSB8fCcnfSB8fDApCiAgICAgICA8PT4gKCRzZWVuLT57JGEtPlswXSB8fCcnfSB8fDApCiAgICAgICBvciAkYS0+WzBdIGNtcCAkYi0+WzBdICAjIFNvIGl0J3MgYXQgbGVhc3QgcHJlZGljdGFibGUKICAgIH0KICAgICAgQCRpdGVtczsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4KClRoaXMgZGVjbGFyZXMgdGhhdCB5b3Ugd2FudCB0byBkZWNsYXJlIGEgcGFydGljdWxhciBpbWFnZSBhcyB0aGUgbG9nbyBmb3IKdGhpcyBmZWVkLiAgTW9zdCBmZWVkcyBkb24ndCBoYXZlIHN1Y2ggYSB0aGluZywgYW5kIG1vc3QgcmVhZGVycyBqdXN0IGlnbm9yZQppdCBhbnl3YXksIGJ1dCBpZiB5b3Ugd2FudCB0byBkZWNsYXJlIGl0LCB0aGlzIGZ1bmN0aW9uIGlzIGhvdy4gIFRoZQp0aHJlZSBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgYWxsIHJlcXVpcmVkLCBhcmU6IHRoZSBpbWFnZSdzIFVSTCwgaXRzCmhlaWdodCBpbiBwaXhlbHMsIGFuZCBpdHMgd2lkdGggaW4gcGl4ZWxzLgpBY2NvcmRpbmcgdG8gdmFyaW91cyBzcGVjcywgdGhlIHdpZHRoIHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgMTQ0LAphbiB0aGUgaGVpZ2h0IHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgNDAwLgoKQSB0eXBpY2FsIHVzYWdlOgoKICByc3NfaW1hZ2UoImh0dHA6Ly9pbnRlcmdsYWNpYWwuY29tL3Jzcy93ZWVibC5naWYiLCAxMDYsIDE0MCk7CgpCZSBjYXJlZnVsIG5vdCB0byBtaXggdXAgdGhlIGhlaWdodCBhbmQgd2lkdGguCgo9Y3V0CgoKc3ViIGltYWdlIHsKICBteSgkc2VsZiwgJHVybCwgJGgsICR3KSA9IHNwbGljZShAXywwLDQpOwogIENhcnA6OmNyb2FrICJVc2FnZTogXCRyc3MtPmltYWdlKFwkdXJsLCBcJGgsIFwkdykiCiAgIHVubGVzcyAkdXJsIGFuZCAkaCBhbmQgJHcKICAgICBhbmQgJGggPX4gbS9eXGR7MSwzfSQvcwogICAgIGFuZCAkdyA9fiBtL15cZHsxLDN9JC9zCiAgOwogICRzZWxmLT5pbWFnZV91cmwoJHVybCk7CiAgJHNlbGYtPmltYWdlX2hlaWdodCgkaCk7CiAgJHNlbGYtPmltYWdlX3dpZHRoKCAkdyk7CgogICAgIyAgd2lkdGggbXVzdCAoc2hvdWxkPykgYmUgYmV0d2VlbiAxIGFuZCAxNDQKICAgICMgaGVpZ2h0IG11c3QgKHNob3VsZD8pIGJlIGJldHdlZW4gMSBhbmQgNDAwCgogIEBfIGFuZCAkc2VsZi0+aW1hZ2VfbGluayggICAgICAgIHNoaWZ0KTsKICBAXyBhbmQgJHNlbGYtPmltYWdlX3RpdGxlKCAgICAgICBzaGlmdCk7CiAgQF8gYW5kICRzZWxmLT5pbWFnZV9kZXNjcmlwdGlvbiggc2hpZnQpOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19zYXZlKCBJPGZpbGVuYW1lPiApOz4KCj1pdGVtIEM8cnNzX3NhdmUoIEk8ZmlsZW5hbWUsIG1heF9hZ2VfZGF5cz4gKTs+CgpUaGlzIHNhdmVzIHRoZSBSU1MgZGF0ZSB0byB0aGUgZmlsZSB5b3Ugc3BlY2lmeS4gIElmIHRoZSBSU1MgZGF0YSBoYXNuJ3QKY2hhbmdlZCwgdGhlIGZpbGUgKGFuZCBpdHMgbW9kdGltZSkgYXJlbid0IGFsdGVyZWQuICBUaGUgb3B0aW9uYWwgSTxtYXhfYWdlX2RheXM+CnBhcmFtZXRlciBtZWFucyB0aGF0IGlmIGV2ZXIgdGhlIGZpbGUgZXhpc3RzLCBhbmQgaXRzIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQKZm9yIHRoYXQgbWFueSBkYXlzIG9yIGxvbmdlciwgdGhlbiB0aGUgcHJvZ3JhbSBzaG91bGQgZGllIHdpdGggYSB3YXJuaW5nCm1lc3NhZ2UuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgYSBzY3JlZW4tc2NyYXBlciBmb3IgYSBzaXRlIHRoYXQgd2UKa25vdyBzaG91bGQgKGluIHRoZW9yeSkgY2hhbmdlIGl0cyBjb250ZW50IGF0IGxlYXN0IHdlZWtseSwgd2UgbWlnaHQgc2F2ZQp0aGUgUlNTIGZpbGUgd2l0aDoKCiAgcnNzX3NhdmUoIndoYXRldmVyLnJzcyIsIDE3KTsKICAgIyBTY3JlYW0gaWYgdGhlIGZlZWQgaXMgdW5jaGFuZ2VkIGZvciAxNyBkYXlzLgoKVGhlIHNldmVudGVlbiB0aGVyZSBpcyBnb3R0ZW4gYnkgYXNzdW1pbmcgdGhhdCBqdXN0IG1heWJlIHRoZSBzaXRlCm1pZ2h0IHNraXAgdHdvIHdlZWtzIGZvciBhIHZhY2F0aW9uIG5vdyBhbmQgdGhlbiwgYW5kIG1pZ2h0IGV2ZW4gcHV0Cm91dCB0aGUgcHJlLXZhY2F0aW9uIGlzc3VlIGEgZmV3IGRheXMgZWFybHkgLS0gYnV0IHRoYXQgaWYgZXZlciB0aGUgcHJvZ3JhbQpub3RpY2VzIHRoYXQgdGhlIGRhdGEgaGFzbid0IGNoYW5nZWQgZm9yIDE3IGRheXMsIHRoZW4gaXQgc2hvdWxkIGVtaXQKZXJyb3IgbWVzc2FnZXMuICBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSBvbiBhIG9uZS10aW1lIGJhc2lzLApqdXN0IGNoYW5nZSB0aGUgbW9kdGltZSAobGlrZSB2aWEgQzx0b3VjaD4pIG9uIHRoZSBGPHdoYXRldmVyLnJzcz4gZmlsZS4KCklmIHlvdSBkb24ndCBzcGVjaWZ5IGEgQzxtYXhfYWdlX2RheXM+IHZhbHVlLCB0aGVuIHRoaXMgd2hvbGUKY29tcGxhaW4taWYtaXQncy1vbGQgZmVhdHVyZSBpcyBkaXNhYmxlZC4KCj1jdXQKCnN1YiBzYXZlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIENhcnA6OmNyb2FrKCJJIG5lZWQgYSBmaWxlbmFtZSB0byBzYXZlIHRvIikKICAgdW5sZXNzIGRlZmluZWQgJGZpbGVuYW1lIGFuZCBsZW5ndGggJGZpbGVuYW1lOwoKICAkc2VsZi0+aGlzdG9yeV9maWxlIGFuZCAkc2VsZi0+X3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0OwogICRzZWxmLT5fd3JpdGVfaGlzdG9yeV9maWxlOwoKICBteSAkbmV3X2NvbnRlbnQgPSAkc2VsZi0+YXNfc3RyaW5nOwoKICBsb2NhbCAqUlNTOwogICMgU2VlIGlmIHdlIGNhbiBza2lwIHdyaXRpbmcgdG8gZGlzawogIGlmKC1lICRmaWxlbmFtZSBhbmQgLWYgXyBhbmQgLXIgXyBhbmQgLXMgXykgewogICAgREVCVUcgYW5kIHByaW50ICJDb21wYXJpbmcgdG8gJGZpbGVuYW1lLi4uXG4iOwogICAgb3BlbiBSU1MsICRmaWxlbmFtZQogICAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkZmlsZW5hbWU6ICQhIjsgIyBpbnNhbml0eQogICAgbG9jYWwgJC87CiAgICBteSAkY29udGVudCA9IDxSU1M+OwogICAgY2xvc2UoUlNTKTsKICAgIAogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudCApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUuXG4iOwogICAgICByZXR1cm4gJHNlbGYtPl9jaGVja19hZ2UoJGZpbGVuYW1lLCAkbWF4YWdlKTsKICAgIH0KICAgIAogICAgbXkgJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlID0gJG5ld19jb250ZW50OwogICAgZm9yZWFjaCBteSAkYyAoJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlLCAkY29udGVudCkgewogICAgICAkYyA9fiBzezxsYXN0W0JiXXVpbGRbRGRdYXRlPi4qPzwvbGFzdFtCYl11aWxkW0RkXWF0ZT59e307CiAgICAgICRjID1+IHN7PHB1YltEZF1hdGU+Lio/PC9wdWJbRGRdYXRlPn17fTsKICAgICAgJGMgPX4gdHJ7XG5ccn17fXM7ICAjIEFuZCBzbWFzaCBuZXdsaW5lcyB3aGlsZSB3ZSdyZSBhdCBpdC4uLgogICAgfQogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudF93aXRob3V0X2J1aWxkZGF0ZSApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUsIGJhc2ljYWxseS5cbiI7CiAgICAgIHJldHVybiAkc2VsZi0+X2NoZWNrX2FnZSgkZmlsZW5hbWUsICRtYXhhZ2UpOwogICAgfQogICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgc3RhbGUuICBPdmVyd3JpdGluZy5cbiI7CiAgfQogIERFQlVHIGFuZCBwcmludCAiV3JpdGluZyB0byAkZmlsZW5hbWUgLi4uXG4iOwogIAogICMgT0ssIHdlIGhhdmUgdG8gYWN0dWFsbHkgd3JpdGUgaXQuICBMZXQncyBkbyBpdCBmYXN0LgogIG9wZW4oUlNTLCAiPiRmaWxlbmFtZSIpCiAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIHByaW50IFJTUyAkbmV3X2NvbnRlbnQKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgcHJpbnQgdG8gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGNsb3NlKFJTUykKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgY2xvc2UgJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGV2YWwgeyBjaG1vZCAwNjQ0LCAkZmlsZW5hbWUgfTsKICBERUJVRyBhbmQgcHJpbnQgIkRvbmUgd3JpdGluZyB0byAkZmlsZW5hbWVcbiI7CiAgcmV0dXJuIDE7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYXNfc3RyaW5nKCk7PgoKVGhpcyByZXR1cm5zIHRoZSBSU1MtWE1MIGRhdGEgYXMgYSBzdHJpbmcuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAppbnRlcm5hbGx5IGJ5IHRoZSByc3Nfc2F2ZSBmdW5jdGlvbjsgYnV0IHlvdSBtaWdodCB3YW50IHRvIGNhbGwgaXQKZXhwbGljaXRseSwgYXMgaW4gYSBDR0ksIHdoZXJlIHlvdXIgQ0dJIHdvdWxkIHByb2JhYmx5IGVuZCBsaWtlIHRoaXM6CgogIHByaW50ICJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3htbFxuXG4iLCByc3NfYXNfc3RyaW5nKCk7CiAgZXhpdDsKCj1jdXQKCgpzdWIgYXNfc3RyaW5nIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIAogIG15ICRuYW1lc3BhY2VzID0gJHNlbGYtPl9uYW1lc3BhY2VzX2FzX3N0cmluZzsKICAKICByZXR1cm4gam9pbiAnJyA9PgogICAgcXF7PD94bWwgdmVyc2lvbj0iMS4wIj8+XG59LAogICAgKCREVERfcHViaWQgYW5kICREVERfdXJsKQogICAgID8gcXF7PCFET0NUWVBFIHJzcyBQVUJMSUMgIiREVERfcHViaWQiXG4gICIkRFREX3VybCI+XG59IDogKCksCgogICAgJHNlbGYtPmNzcyA/ICggIyBodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldC8KICAgICAgcXF7PD94bWwtc3R5bGVzaGVldCB0aXRsZT0iQ1NTX2Zvcm1hdHRpbmciIHR5cGU9InRleHQvY3NzIiBocmVmPSJ9LAogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT5jc3MpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgICRzZWxmLT54c2wgPyAoCiAgICAgIHFxezw/eG1sLXN0eWxlc2hlZXQgdGl0bGU9IlhTTF9mb3JtYXR0aW5nIiB0eXBlPSJ0ZXh0L3htbCIgaHJlZj0ifSwgIyBUT0RPOiBiZXR0ZXIgbWltZSB0eXBlPwogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT54c2wpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgIHFxezxyc3MgdmVyc2lvbj0iMi4wIiRuYW1lc3BhY2VzPjxjaGFubmVsPn0sCiAgICAkc2VsZi0+X21vZHZlcnNpb25fY29tbWVudCwKICAgICRzZWxmLT5fdmFyaW91c19jb21tZW50cywKICAgICRzZWxmLT5fbWV0YWRhdGFfYXNfeG1sLAogICAgJHNlbGYtPl9pdGVtc19hc194bWwsCiAgICAiXG48L2NoYW5uZWw+PC9yc3M+XG4iLAogIDsKfQoKc3ViIF9uYW1lc3BhY2VzX2FzX3N0cmluZyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbnMgPSAkc2VsZi0+eydfbmFtZXNwYWNlcyd9OwogIHJldHVybiAnJyB1bmxlc3MgJG5zIGFuZCBrZXlzICUkbnM7CiAgcmV0dXJuCiAgICBqb2luICcnLCAiXG4iLAogICAgbWFwIHFxeyAgeG1sbnM6JF89IiQkbnN7JF99IlxufSwKICAgIHNvcnQga2V5cyAlJG5zCiAgOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfbWV0YWRhdGFfYXNfeG1sIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15KCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKSA9ICgKICAgIG1hcCBkZWZpbmVkKCRfKSA/ICRfIDogJycsCiAgICAkc2VsZi0+dXJsLCAkc2VsZi0+dGl0bGUsICRzZWxmLT5kZXNjcmlwdGlvbiwKICApOwogIAogIGlmKCREV0lNKSB7CiAgICAjIHRvbGVyYXRlIHN3aXRjaGluZyB0aGUgZGVzY3JpcHRpb24vdGl0bGUgYW5kIHRoZSBVUkwKICAgIGlmKCR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlVSTCBcIiR1cmxcIiBsb29rcyBmaXNoeS4uLlxuIjsKICAgICAgaWYoICR0aXRsZSA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICAgKCR1cmwsICR0aXRsZSkgPSAoJHRpdGxlLCAkdXJsKTsKICAgICAgICAkc2VsZi0+dXJsKCR1cmwpOwogICAgICAgICRzZWxmLT50aXRsZSgkdGl0bGUpOwogICAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICAgIERFQlVHIGFuZCBwcmludCAiU3dhcHBpbmcgd2l0aCBkZXNjcmlwdGlvbiBcIiRkZXNjcmlwdGlvblwiXG4iOwogICAgICAgICgkdXJsLCAkZGVzY3JpcHRpb24pID0gKCRkZXNjcmlwdGlvbiwgJHVybCk7CiAgICAgICAgJHNlbGYtPnVybCgkdXJsKTsKICAgICAgICAkc2VsZi0+ZGVzY3JpcHRpb24oJGRlc2NyaXB0aW9uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBDYXJwOjpjcm9hayggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIG1ldGFkYXRhICIKICAgICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICAgICk7CiAgICAgIH0KICAgIH0KICB9CgogIG15ICRsYW5nID0gJHNlbGYtPmxhbmd1YWdlOwogICRsYW5nIGFuZCAkbGFuZyA9fiB0cltfXVtcLV07ICMgdG9sZXJhdGUgdW5kZXJzY29yZXMKICAkbGFuZyA9ICdlbicgdW5sZXNzIGRlZmluZWQgJGxhbmcKICAgIyBGcm9tIEkxOE46OkxhbmdUYWdzLi4uCiAgIGFuZCAkbGFuZyAhfiBtL15baUl4SV0kL3MKICAgYW5kICRsYW5nID1+CiAgICBtL14oPzogICMgRmlyc3Qgc3VidGFnCiAgICAgICAgIFt4aUlYXSB8IFthLXpBLVpdezIsM30KICAgICAgKQogICAgICAoPzogICMgU3VidGFncyB0aGVyZWFmdGVyCiAgICAgICAgIC0gICAgICAgICAgICMgc2VwYXJhdG9yCiAgICAgICAgIFtBLVphLXowLTldezEsOH0gICMgc3VidGFnICAKICAgICAgKSoKICAgICQveHMKICA7CgogIHJldHVybiBqb2luICcnLCBzcHJpbnRmKCBxcXsKPGxpbms+JXM8L2xpbms+Cjx0aXRsZT4lczwvdGl0bGU+CjxkZXNjcmlwdGlvbj4lczwvZGVzY3JpcHRpb24+CjxsYW5ndWFnZT4lczwvbGFuZ3VhZ2U+CjxsYXN0QnVpbGREYXRlPiVzPC9sYXN0QnVpbGREYXRlPgp9LAogICAgICBtYXAoICRzZWxmLT5odG1sMnRleHQoJF8pLAogICAgICAgICR1cmwgICAgICAgICB8fCAnISEhIUR1bW15VVJMISEhIScsCiAgICAgICAgJHRpdGxlICAgICAgIHx8ICRkZXNjcmlwdGlvbiB8fCAkdXJsIHx8ICchISEhRHVtbXlUaXRsZSEhISEnLAogICAgICAgICRkZXNjcmlwdGlvbiB8fCAkdGl0bGUgfHwgJHVybCB8fCAnISEhIUR1bW15RGVzY3JpcHRpb24hISEhJywKICAgICAgKSwKICAgICAgJGxhbmcsCiAgICAgICRzZWxmLT5fZGF0ZV9yZmM4MjIoKSwKICAgICksCiAgICBncmVwICRfLAogICAgCiAgICAkc2VsZi0+eyJza2lwSG91cnMifSwKICAgICRzZWxmLT57InNraXBEYXlzIn0sCiAgICAkc2VsZi0+X3N5X3VwZGF0ZV9hc194bWwsCiAgICAoKCRzZWxmLT57InR0bCJ9IHx8ICcnKSA9fiBtL14oXGQrKSQvcykgJiYgIjx0dGw+JDE8L3R0bD5cbiIsCiAgICAkc2VsZi0+d2ViTWFzdGVyICYmCiAgICAgKCI8d2ViTWFzdGVyPiIgLiAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT53ZWJNYXN0ZXIpIC4gIjwvd2ViTWFzdGVyPlxuIiksCiAgICAKICAgICRzZWxmLT5kb2NzICYmCiAgICAgKCI8ZG9jcz4iIC4gJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+ZG9jcykgLiAiPC9kb2NzPlxuIiksCgogICAgJHNlbGYtPl9pbWFnZV9hc194bWwsCiAgICAkc2VsZi0+eydtb3JlX21ldGFkYXRhJ30sICMgYSBoYWNrIGZvciBzbmVha2luZyBpbiBtb3JlIHRoaW5ncwogIDsKCiMgLi4ud2l0aCBzYW5pdHktY2hlY2tlcnMKCn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3Byb2Nlc3NfaXRlbV9wYXJhbXMgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0KICAgIG1hcCB7OyAoZGVmaW5lZCgkXykgJiYgbS9cUy8pID8gJF8gOiAnJyB9ICMgY29udGVudGZ1bG5lc3MgZmlsdGVyCiAgICBtYXAgJHNlbGYtPmh0bWwydGV4dCgkXyksICAjIGhlcmUncyB3aGVyZSB3ZSBkZS1odG1saWZ5IHRoaW5ncwogICAgQF87CiAgOwogIAogIGZvcigkdXJsLCAkdGl0bGUsICRkZXNjcmlwdGlvbikgewogICAgaWYocmVmICRfICAgICAgICkgeyB9ICAjIE9rYXkKICAgIGVsc2lmKGRlZmluZWQgJF8pIHsgcy9eXHMrLy9zOyBzL1xzKyQvL3MgfQogICAgZWxzZSAgICAgICAgICAgICAgeyAkXyA9ICcnIH0KICB9CiAgCiAgIyBUb2xlcmF0ZSBzd2l0Y2hpbmcgdGhlIGRlc2NyaXB0aW9uL3RpdGxlIGFuZCB0aGUgVVJMCiAgaWYoJERXSU0gYW5kICR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgREVCVUcgYW5kIHByaW50ICJVUkwgXCIkdXJsXCIgbG9va3MgZmlzaHkuLi5cbiI7CiAgICBpZiggJHRpdGxlID1+IG17XlthLXpdK1thLXowLTldKjpcUyskfXMpIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICgkdXJsLCAkdGl0bGUpID0gKCR0aXRsZSwgJHVybCk7CiAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlN3YXBwaW5nIHdpdGggZGVzY3JpcHRpb24gXCIkZGVzY3JpcHRpb25cIlxuIjsKICAgICAgKCR1cmwsICRkZXNjcmlwdGlvbikgPSAoJHRpdGxlLCAkZGVzY3JpcHRpb24pOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y29uZmVzcyggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIGl0ZW0gIgogICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICApOwogICAgfQogIH0KICByZXR1cm4gKCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKTsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX2l0ZW1zX2FzX3htbCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSBAaXRlbXM7CiAgbXkgQHhtbF9vdXQgPSAoJE1heWJlTkwpOwoKICBpZiggJHNlbGYtPmFsbG93X2R1cGxpY2F0ZXMgKSB7CiAgICBAaXRlbXMgPSBAeyAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyE/IiB9OwogIH0gZWxzZSB7CiAgICBteSAlc2VlbjsKICAgIGZvcmVhY2ggbXkgJGkgKEB7ICRzZWxmLT57J2l0ZW1zJ30gfHwgZGllICJOTyBJVEVNUyE/IT8iIH0pIHsKICAgICAgaWYoICRzZWVueyAkaS0+WzBdIH0gKysgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJSZW1vdmluZyBkdXBsaWNhdGUgaXRlbSBAJGlcbiI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHVzaCBAaXRlbXMsICRpOwogICAgICB9CiAgICB9CiAgfQoKICBteSAkaXRlbV9saW1pdCA9IGludCggJHNlbGYtPml0ZW1fbGltaXQgfHwgMCApOwogIGlmKCRpdGVtX2xpbWl0KSB7CiAgICBpZihAaXRlbXMgPiBhYnMoJGl0ZW1fbGltaXQpKSB7CiAgICAgIGlmKCRpdGVtX2xpbWl0ID4gMCkgeyAjIGxpa2UgNCB0byBtZWFuIGp1c3QgdGhlIGZpcnN0IDQKICAgICAgICBERUJVRyBhbmQgcHJpbnQgIiBLaWxsaW5nIGFsbCBidXQgdGhlIGZpcnN0ICRpdGVtX2xpbWl0IGl0ZW1zLlxuIjsKICAgICAgICBzcGxpY2UgQGl0ZW1zLCAkaXRlbV9saW1pdDsKICAgICAgfSBlbHNlIHsgIyBsaWtlIC00IHRvIG1lYW4ganVzdCB0aGUgbGFzdCA0CiAgICAgICAgREVCVUcgYW5kIHByaW50ICIgS2lsbGluZyBhbGwgYnV0IHRoZSBsYXN0ICIsIDAtJGl0ZW1fbGltaXQsICIgaXRlbXMuXG4iOwogICAgICAgIHNwbGljZSBAaXRlbXMsIDAsIEBpdGVtcyArICRpdGVtX2xpbWl0OwogICAgICAgICAjIFNvIGlmIGl0ZW1fbGltaXQgaXMgLTMgYW5kIEBpdGVtcyBoYXMgMTAgZWxlbWVudHMsCiAgICAgICAgICMgIHRoZW4gdGhhdCBudW1iZXIgd2lsbCBiZSA3LCBpLmUuLCB0byBjaG9wIHRoZSBmaXJzdCA3CiAgICAgICAgICMgIGVsZW1lbnRzLCBsZWF2aW5nIHRoZSBsYXN0IDMuCiAgICAgIH0KICAgIH0KICB9CiAgREVCVUcgYW5kIHByaW50IHNjYWxhcihAaXRlbXMpLCAiIGl0ZW1zIGF0IGhhbmQ6XG4iOwogIAogIGZvcmVhY2ggbXkgJGkgKEBpdGVtcykgewogICAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0gQCRpOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiSTogKHUgJHVybCkgKHQgJHRpdGxlKSAoZCAkZGVzY3JpcHRpb24pXG4iOwogICAgbmV4dCB1bmxlc3MgJHVybCBvciAkdGl0bGUgb3IgJGRlc2NyaXB0aW9uOwogICAgcHVzaCBAeG1sX291dCwgCiAgICAgIjxpdGVtPiRNYXliZU5MIiwKICAgICAobWFwICIkTWF5YmVJbmRlbnQkXyRNYXliZU5MIiwKICAgICAgIGxlbmd0aCgkdGl0bGUpICAgICAgID8gIjx0aXRsZT4kdGl0bGU8L3RpdGxlPiIgOiAoKSwKICAgICAgIGxlbmd0aCgkdXJsKSAgICAgICAgID8gIjxsaW5rPiR1cmw8L2xpbms+IiA6ICgpLAogICAgICAgbGVuZ3RoKCRkZXNjcmlwdGlvbikgPyAiPGRlc2NyaXB0aW9uPiRkZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+IiA6ICgpLAogICAgICksCiAgICAgIjwvaXRlbT4kTWF5YmVOTFxuIiwKICB9CiAgREVCVUcgYW5kIHByaW50ICJfaXRlbXNfYXNfeG1sIHJldHVybmluZyB7XG4iLCBqb2luKCcnLCBAeG1sX291dCksICJ9XG5cbiI7CiAgCiAgcmV0dXJuIGpvaW4gJycsIEB4bWxfb3V0Owp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfaW1hZ2VfYXNfeG1sIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIHJldHVybiAnJyB1bmxlc3MKICAgICRzZWxmLT5pbWFnZV91cmwgYW5kICRzZWxmLT5pbWFnZV9oZWlnaHQgYW5kICRzZWxmLT5pbWFnZV93aWR0aDsKCiAgIyA8IUVMRU1FTlQgaW1hZ2UgKHRpdGxlIHwgdXJsIHwgbGluayB8IHdpZHRoPyB8IGhlaWdodD8gfCBkZXNjcmlwdGlvbj8pKj4KCiAgcmV0dXJuIGpvaW4gJycsCiAgICAiPGltYWdlPlxuIiwKICAgIG1hcCgiICAkX1xuIiA9PgogICAgICAkc2VsZi0+eG1sZWxlbSggJ3RpdGxlJyAgPT4gJHNlbGYtPmltYWdlX3RpdGxlIHx8ICRzZWxmLT5odG1sMnRleHQoJHNlbGYtPnRpdGxlKSksCiAgICAgICRzZWxmLT54bWxlbGVtKCAndXJsJyAgICA9PiAkc2VsZi0+aW1hZ2VfdXJsKSwgIyB1cmwgb2YgdGhlIGltYWdlCiAgICAgICRzZWxmLT54bWxlbGVtKCAnbGluaycgICA9PiAkc2VsZi0+aW1hZ2VfbGluayAgfHwgJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+dXJsICApKSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICd3aWR0aCcgID0+ICRzZWxmLT5pbWFnZV93aWR0aCksCiAgICAgICRzZWxmLT54bWxlbGVtKCAnaGVpZ2h0JyA9PiAkc2VsZi0+aW1hZ2VfaGVpZ2h0KSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICdkZXNjcmlwdGlvbicKICAgICAgICAgICAgICAgICA9PiAkc2VsZi0+aW1hZ2VfZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgICAgICB8fCAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT5kZXNjcmlwdGlvbikpLAogICAgKSwKICAgICI8L2ltYWdlPlxuIiwKICA7Cn0KCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCj1pdGVtIEM8Z2V0X3VybCggSTx1cmw+ICk7PgoKPWl0ZW0gQzwkY29udGVudCA9IGdldF91cmwoIEk8dXJsPiApOz4KCj1pdGVtIEk8b3I6PiBDPDwgJGNvbnRlbnQgPSAkcnNzLT5nZXRfdXJsKC4uLik7ID4+Cgo9aXRlbSBJPG9yOj4gQzw8ICRjb250ZW50LT5nZXRfdXJsKC4uLik7ID4+CgpUaGlzIHRyaWVzIHRvIGdldCB0aGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gdXJsLCBhbmQgcmV0dXJucyBpdC4KClRoaXMgaXMgcXVpdGUgbGlrZSBMPExXUDo6U2ltcGxlPidzIEM8Z2V0PiBmdW5jdGlvbiwgYnV0IHdpdGggc29tZQphZGRpdGlvbmFsIGZlYXR1cmVzOgoKPW92ZXIKCj1pdGVtICogSWYgaXQgY2FuJ3QKZ2V0IHRoZSBVUkwncyBjb250ZW50IGF0IGZpcnN0LCBpdCB3aWxsIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzIGFuZCB0cnkKYWdhaW4sIHVwIHRvIGFib3V0IGZpdmUgdGltZXMuIChUaGlzIGlzIHRvIGF2b2lkIHRoZSBjYXNlIG9mIHRoZSBVUkwKYmVpbmcgdGVtcG9yYXJpbHkgaW5hY2Nlc3NpYmxlIHNpbXBseSBiZWNhdXNlIHRoZSBETlMgaXMgYSBiaXQgc2xvdywKb3IgYmVjYXVzZSB0aGUgc2VydmVyIGlzIHRvbyBidXN5LikKCj1pdGVtICogSWYgaXQgY2FuJ3QgZ2V0IHRoZSBjb250ZW50LCBldmVuIGFmdGVyIHNldmVyYWwgcmV0cmllcywKaXQgd2lsbCBhYm9ydCB0aGUgcHJvZ3JhbSAobGlrZSBhIEM8ZGllPikuICBJZiB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGlzCmJlaGF2aW9yLCB0aGVuIGNhbGwgaXQgYXMgQzxldmFsIHsgZ2V0X3VybCgkdXJsKSB9Oz4KCj1pdGVtICogSWYgeW91IGNhbGwgdGhlIGZ1bmN0aW9uIGluIHZvaWQgY29udGV4dCAoaS5lLiwgbm90IHVzaW5nIGl0cwpyZXR1cm4gdmFsdWUpLCB0aGVuIHRoZSBmdW5jdGlvbiBhc3NpZ25zIHRoZSBVUkwncyBjb250ZW50IHRvIEM8JF8+LgpUaGF0J3Mgc28geW91IGNhbiB3cml0ZSBuaWNlIGNvbmNpc2UgY29kZSBsaWtlIHRoaXM6CgogICAgICAgICAgIGdldF91cmwgJHRoYXRzaXRlOwogICAgICAgICAgIG0vVG9wIFN0b3JpZXMgVG9uaWdodC8gb3IgZGllICJXaGF0LCBubyB0b3Agc3Rvcmllcz8iOwogICAgICAgICAgIHdoaWxlKCBtezxhIGNsYXNzPSJ0b3AiIGhyZWY9IiguKj8pIj4oLio/KTwvYT59ZyApIHsKICAgICAgICAgICAgIHJzc19pdGVtKCIkdGhhdHNpdGUvJDEiLCAkMik7CiAgICAgICAgICAgfQoKPWl0ZW0gKiBUaGlzIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhlIFVSTCBub3QgZXhhY3RseSBhcy1pcywgYnV0IGFmdGVyCmNoYW5naW5nIGl0cyBuZXdsaW5lcyB0byBuYXRpdmUgZm9ybWF0LiAgVGhhdCBpcywgaWYgdGhlIGNvbnRlbnRzIG9mIHRoZQpVUkwgdXNlIENSLUxGIHBhaXJzIHRvIGV4cHJlc3MgbmV3bGluZXMsIHRoZW4gQzxnZXRfdXJsPiBjaGFuZ2VzIHRoZXNlCnRvIEM8XG4+J3MgYmVmb3JlIHJldHVybmluZyB0aGUgY29udGVudC4gIChTaW1pbGFybHkgZm9yIG9sZCBNYWNPUwpuZXdsaW5lIGZvcm1hdC4pICBDbGVhcmx5IHRoaXMgaXMgd3JvbmcgaW4geW91J3JlIGRlYWxpbmcgd2l0aCBiaW5hcnkKZGF0YTsgaW4gdGhhdCBjYXNlLCB1c2UgTFdQOjpTaW1wbGUncyBDPGdldD4gZGlyZWN0bHkuCgo9aXRlbSAqIEZpbmFsbHksIGFzIGEgcmVzb3VyY2UtY29udmVyc2F0aW9uIG1lYXN1cmUsIHRoaXMgZnVuY3Rpb24Kd2lsbCBhbHNvIHRyeSB0byBjYWxsIEM8c2xlZXA+IGEgZmV3IHRpbWVzIGlmIGl0IHNlZXMgc2V2ZXJhbCBxdWljawpjYWxscyB0byBpdHNlbGYgY29taW5nIGZyb20gYSBwcm9ncmFtIHRoYXQgc2VlbXMgdG8gYmUgcnVubmluZwp1bmRlciBjcm9udGFiLiAgQXMgbW9zdCBvZiBteSBSU1MtZ2VuZXJhdG9ycyBhcmUgY3JvbnRhYmJlZCwgSQpmaW5kIGl0IHZlcnkgdXNlZnVsIHRoYXQgSSBjYW4gaGF2ZSBob3dldmVyIG1hbnkgQzxnZXRfdXJsPidzIGluCm15IGNyb250YWJiZWQgcHJvZ3JhbXMgd2l0aG91dCB3b3JyeWluZyB0aGF0IHRoZXknbGwgdGFrZSBldmVuIGEKbm90aWNlYWJsZSBwYXJ0IG9mIHRoZSBzZXJ2ZXIncyBiYW5kd2lkdGguCgo9YmFjawoKPWN1dAoKbXkgJGxhc3RfdXJsX2dldF90aW1lOwoKc3ViIGdldF91cmwgKCQpIHsKICBteSAkc2VsZiA9IHNoaWZ0IGlmIEBfID4gMTsgIyB3b3JrIGFzIGEgZnVuY3Rpb24gb3IgbWV0aG9kCgogICMgIEdvIHdoaXAgdXAgYW4gb2JqZWN0IHVubGVzcyBvbmUgd2FzIGdpdmVuOgogICRzZWxmID0gKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldykgdW5sZXNzIGRlZmluZWQgJHNlbGY7CiAgJHNlbGYgPSAkc2VsZi0+bmV3IHVubGVzcyByZWYgJHNlbGY7CiAgCiAgbXkgJHVybCA9ICRfWzBdOwogIENhcnA6OmNyb2FrICJcIiR1cmxcIiBkb2Vzbid0IGxvb2sgbGlrZSBhIFVSTCFcbkFib3J0aW5nIgogICB1bmxlc3MgZGVmaW5lZCgkdXJsKSBhbmQgJHVybCA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zOwogIAogIGlmKCRTbGVlcHkgYW5kICRsYXN0X3VybF9nZXRfdGltZSkgewogICAgbXkgJGRlbGF5ID0gJFNsZWVweSAtICh0aW1lKCkgLSAkbGFzdF91cmxfZ2V0X3RpbWUpOwogICAgaWYoICRkZWxheSA+IDAgKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiTGFzdCBVUkxnZXQgd2FzIGF0ICRsYXN0X3VybF9nZXRfdGltZSwgc2xlZXAgJGRlbGF5XG4iOwogICAgICBzbGVlcCAkZGVsYXk7CiAgICB9IGVsc2UgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkxhc3QgVVJMZ2V0IHdhcyBhdCAkbGFzdF91cmxfZ2V0X3RpbWUsIHNvIG5vIHNsZWVwLlxuIjsKICAgIH0KICB9CiAgCiAgbXkgJGNvbnRlbnQ7CiAgbXkgJGNvdW50ID0gMDsKICBmb3JlYWNoIG15ICRkZWxheSAoQFJldHJ5X2RlbGF5cywgMCkgewogICAgZGVsZXRlICRzZWxmLT57J19sb29wcyd9OwogICAgZGVsZXRlICRzZWxmLT57J19odHRwX2Fib3J0J307CgogICAgREVCVUcgYW5kIHByaW50ICJHZXR0aW5nICR1cmwgLi4uXG4iOwogICAgKyskY291bnQ7CiAgICBpZiggZGVmaW5lZCgKICAgICAgJGNvbnRlbnQgID0gICRzZWxmLT5fZ2V0KCR1cmwpCiAgICApKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiT0ssIGdvdCBpdCAoIiwgbGVuZ3RoKCRjb250ZW50KSwgIiBieXRlcylcbiI7CiAgICAgIGxhc3Q7CiAgICB9CiAgICAKICAgIGlmKCAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkNvdWxkbid0IGdldCBpdCBhbmQgd29uJ3QgcmV0cnkgKCIsIAogICAgICAgICRzZWxmLT57J19odHRwX2Fib3J0J30sICIpXG4iOwogICAgICBsYXN0OwogICAgfSBlbHNlIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJPZGQsIGNvdWxkbid0IGdldCBpdC5cbiI7CiAgICB9CiAgICBpZigkZGVsYXkpIHsgREVCVUcgYW5kIHByaW50ICJTbGVlcGluZyAkZGVsYXkgc2VjLi4uXG4iOyBzbGVlcCAkZGVsYXk7IH0KICB9CiAgJGxhc3RfdXJsX2dldF90aW1lID0gdGltZSgpOwoKICB1bmxlc3MoIGRlZmluZWQgJGNvbnRlbnQgKSB7CiAgICBteSAkaGVhZGVycyA9ICRzZWxmLT57J19odHRwX2hlYWRlcnMnfTsKICAgIGlmKCAkaGVhZGVycyBhbmQgJGhlYWRlcnMgPX4gc3tefXsgIH1tZyApIHsKICAgICAgJGhlYWRlcnMgPSAiXG5SZXNwb25zZSBoZWFkZXJzOlxuJGhlYWRlcnMiOwogICAgfSBlbHNlIHsKICAgICAgJGhlYWRlcnMgPSAnJzsKICAgIH0KICAgICRjb3VudCAuPSAoJGNvdW50ID09IDEpID8gIiB0cnkiIDogIiB0cmllcyI7CiAgICBDYXJwOjpjcm9haygiQ291bGRuJ3QgZ2V0ICR1cmwgaW4gJGNvdW50JGhlYWRlcnNcblNvLCBhYm9ydGluZyIpCiAgfQogIAogIGlmKCROYXRpdml6ZV9uZXdsaW5lcykgewogICAgaWYoIlxuIiBlcSAiXGNqIikgeyAgICAgICAjIENSID0+IExGICAgIENSIExGTEYuLi4gPT4gTEYgICBMRiA9PiBMRgogICAgICAkY29udGVudCA9fiBzL1xjbVxjaiovXG4vZzsgIyBtb3N0IGVmZmljaWVudCwgSSBkYXJlIHNheQogICAgfSBlbHNpZigiXG4iIGVxICJcY20iKSB7ICAjIENSID0+IENSICAgIENSIExGTEYuLi4gPT4gQ1IgICBMRiA9PiBDUgogICAgICAkY29udGVudCA9fiBzLyg/Oig/OlxjbVxjaispfFxjaikvXG4vZzsKICAgIH0gZWxzZSB7CiAgICAgICRjb250ZW50ID1+IHMvKD86XG58XHJ8XG5ccikvXG4vZzsKICAgIH0KICB9CiAgCiAgJF8gPSAkY29udGVudCB1bmxlc3MgZGVmaW5lZCB3YW50YXJyYXk7CiAgcmV0dXJuICRjb250ZW50Owp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgVGhpbmdzIGJlbG93IGhlcmUgYXJlIGxlc3MgYW5kIGxlc3MgaW50ZXJlc3RpbmcgdG8gdGhlIGNhc3VhbCByZWFkZXIuCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKc3ViIF9nZXQgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgaWYoCiAgICAhJExXUDo6U2ltcGxlOjpWRVJTSU9OCiAgICBhbmQgJF9bMF0gPX4gbXteaHR0cDovLyhbXiBcblxyXHQvOlxAXSspKD86OihcZCspKT8oL1xTKik/JH0KICApIHsKICAgIG15ICRob3N0ID0gJDE7CiAgICBteSAkcGF0aCA9ICQzOwogICAgbXkgJHBvcnQgPSAwICsgKCQyIHx8IDgwKTsKICAgIGlmKCAkQmFkUG9ydHN7JHBvcnR9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIldlIGRvbid0IGxpa2UgcG9ydCAkcG9ydCBmcm9tICRfWzBdXG4iOwogICAgICByZXR1cm4gdW5kZWY7CiAgICB9CiAgICAKICAgICRwYXRoID0gIi8iIHVubGVzcyBkZWZpbmVkKCRwYXRoKTsKICAgICRzZWxmID0gJHNlbGYtPm5ldyB1bmxlc3MgcmVmKCRzZWxmKTsgIyBuZWVkIHRvIGJlIGFuIG9iamVjdCBtZXRob2QKICAgIHJldHVybiAkc2VsZi0+X3RyaXZpYWxfaHR0cF9nZXQoJGhvc3QsICRwb3J0LCAkcGF0aCk7CiAgfSBlbHNlIHsKICAgIHJldHVybiAkc2VsZi0+X2x3cF9nZXQoQF8pOwogIH0KfQoKc3ViIF9sd3BfZ2V0IHsKICByZXF1aXJlIExXUDo6U2ltcGxlOwogIERFQlVHIGFuZCBwcmludCAiQ2FsbGluZyBMV1A6OlNpbXBsZSBvbiAkX1sxXVxuIjsKICByZXR1cm4gTFdQOjpTaW1wbGU6OmdldCgkX1sxXSk7Cn0KCnN1YiBfdHJpdmlhbF9odHRwX2dldCB7CiAgIG15KCRzZWxmLCAkaG9zdCwgJHBvcnQsICRwYXRoKSA9IEBfOwogICBERUJVRyA+IDEgYW5kIHByaW50ICJHZXR0aW5nIEhPU1Q9JGhvc3QsIFBPUlQ9JHBvcnQsIFBBVEg9JHBhdGhcbiI7CgogICAkc2VsZiA9ICRzZWxmLT5uZXcgdW5sZXNzIHJlZigkc2VsZik7ICMgbmVlZCB0byBiZSBhbiBvYmplY3QgbWV0aG9kCiAgIG15ICRzZWVuID0gKCAkc2VsZi0+eydfbG9vcHMnfSB8fD0ge30gKTsKCiAgIHJlcXVpcmUgSU86OlNvY2tldDsKICAgbG9jYWwoJF5XKSA9IDA7CiAgIG15ICRzb2NrID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFBlZXJBZGRyID0+ICRob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiAkcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG8gICAgPT4gJ3RjcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgID0+IDYwKSB8fCByZXR1cm4gdW5kZWY7CiAgICRzb2NrLT5hdXRvZmx1c2g7CiAgIG15ICRuZXRsb2MgPSAkaG9zdDsKICAgJG5ldGxvYyAuPSAiOiRwb3J0IiBpZiAkcG9ydCAhPSA4MDsKICAgcHJpbnQgJHNvY2sgam9pbigiXDAxNVwwMTIiID0+CiAgICAgICAgICAgICAgICAgICJHRVQgJHBhdGggSFRUUC8xLjAiLAogICAgICAgICAgICAgICAgICAiSG9zdDogJG5ldGxvYyIsCiAgICAgICAgICAgICAgICAgICJVc2VyLUFnZW50OiAkVXNlckFnZW50U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIiIsICIiKTsKCiAgIG15ICRidWYgPSAiIjsKICAgbXkgJG47CiAgIHdoaWxlKCAkbiA9IHN5c3JlYWQoJHNvY2ssICRidWYsIDgqMTAyNCwgbGVuZ3RoKCRidWYpKSApIHsKICAgICBERUJVRyA+IDEwIGFuZCBwcmludCAiICAgIEdvdCAkbiBieXRlcy4uLlxuIjsKICAgICAxOwogICB9CiAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCgkbik7CgogICBpZiggJGJ1ZiA9fiBte15IVFRQL1xkK1wuXGQrXHMrKFxkKylbXlwwMTJdKlwwMTJ9ICkgewogICAgIG15ICRjb2RlID0gJDE7CiAgICAgREVCVUcgYW5kIHByaW50ICIgR290IEhUVFAgc3RhdHVzOiAkY29kZVxuIjsKICAgICBpZiggJGNvZGUgPX4gbS9eMzBbMTIzN10vcyBhbmQgJGJ1ZiA9fiBtL1wwMTJMb2NhdGlvbjpccyooXFMrKS8gKSB7CiAgICAgICAjIFJlZGlyZWN0aW9uCiAgICAgICBteSAkdXJsID0gJDE7CiAgICAgICBpZiggJHVybCA9fiBtL14oZmlsZXxtYWlsdG8pOi8gICMgcHJvdG9jb2xzIHdlIGhhdGUKICAgICAgICAgb3IgJHNlZW4tPnskdXJsfSsrCiAgICAgICAgIG9yIHNjYWxhcihrZXlzICUkc2VlbikgPiAyMAogICAgICAgKSB7CiAgICAgICAgIERFQlVHIGFuZCBwcmludCAiSSBkb24ndCBsaWtlIHRoZSByZWRpcmVjdGlvbiByZXNwb25zZSAkdXJsXG4iOwogICAgICAgICAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ID0gIkJhZCBIVFRQLXJlZGlyZWN0aW9uIGxvb3AuIjsKICAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgICAgfQogICAgICAgcmV0dXJuICRzZWxmLT5fZ2V0KCR1cmwpOyAgIyBSZWN1cnNlIQogICAgIH0KCiAgICAgJGJ1ZiA9fiBzLyguKz8pXDAxNT9cMDEyXDAxNT9cMDEyLy9zOyAgIyB6YXAgdGhlIGhlYWRlcgogICAgICggJHNlbGYtPnsnX2h0dHBfaGVhZGVycyd9ID0gJDEgKSAgID1+ICAgdHIvXDAxNVwwMTIvXG4vc2Q7CiAgICAgCiAgICAgREVCVUcgPiAxMCBhbmQgcHJpbnQgIkhlYWRlcnM6ICQkc2VsZnsnX2h0dHBfaGVhZGVycyd9XG4iOwogICAgIAogICAgICRzZWxmLT57J19odHRwX2Fib3J0J30gPSAiSFRUUCBzdGF0dXMgJGNvZGUiCiAgICAgIGlmICRjb2RlIGVxICc0MDQnIG9yICRjb2RlIGVxICc0MDMnOwogICAgIHJldHVybiB1bmRlZiB1bmxlc3MgJGNvZGUgPX4gbS9eMi87CiAgICAgCiAgICAgREVCVUcgYW5kIHByaW50ICJSZXR1cm5pbmcgIiwgbGVuZ3RoKCRidWYpLCAiIGJ5dGVzIG9mIGNvbnRlbnQuXG4iOwogICB9IGVsc2UgewogICAgIERFQlVHIGFuZCBwcmludCAiR290IGEgaGVhZGVybGVzcyByZXNwb25zZS4gIFJldHVybmluZy5cbiI7CiAgIH0KCiAgIHJldHVybiAkYnVmOwp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCnN1YiBfcmVhZF9oaXN0b3J5X2ZpbGUgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGhmID0gJHNlbGYtPmhpc3RvcnlfZmlsZTsKICB1bmxlc3MoZGVmaW5lZCAkaGYgYW5kIGxlbmd0aCAkaGYpIHsKICAgIERFQlVHIGFuZCBwcmludCAiTm8gaGlzdG9yeV9maWxlIGRlZmluZWQgZm9yICRzZWxmLlxuIjsKICAgIHJldHVybjsKICB9CiAgCiAgbXkoJWZpcnN0LCAlbGFzdCk7ICAjICJsYXN0IiBpbiB0aGUgc2Vuc2Ugb2YgIm1vc3QgcmVjZW50bHkiCiAgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfSA9IFwlZmlyc3Q7CiAgJHNlbGYtPnsnX2xhc3Rfc2VlbicgfSA9IFwlbGFzdCA7CgogIHVubGVzcyggLWUgJGhmIGFuZCAtcyBfICkgewogICAgJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9ID0gdGltZSgpIGlmICREV0lNOwogICAgcmV0dXJuIDA7CiAgfQoKICBteSAkbm93ID0gdGltZSgpOwogIG15ICRmb3JnZXRfYmVmb3JlOwogIAogIG15ICRpbjsKICB7CiAgICBsb2NhbCAqSU47CiAgICBvcGVuKElOLCAkaGYpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkaGY6ICQhIjsgICMgaW5zYW5lCiAgICAkaW4gPSAqSU57SU99OwogIH0KICBsb2NhbCAkXzsKICBteSBAZjsKICB3aGlsZSg8JGluPikgewogICAgdHIvXG5cci8vZDsKICAgIG5leHQgdW5sZXNzIEBmID0gc3BsaXQgIlx0IiwgJF8sIDMgYW5kIGRlZmluZWQoJGZbMF0pIGFuZCBsZW5ndGgoJGZbMF0pOwoKICAgICRsYXN0eyRmWzBdfSA9ICRmWzJdIGlmICRmWzJdOwoKICAgIGlmKCAkZlsxXSApIHsKICAgICAgJGZpcnN0eyRmWzBdfSA9ICRmWzFdOwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgTGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgIH0gZWxzZSB7CiAgICAgICRmaXJzdHskZlswXX0gPSAkbm93OwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgUHJlbGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgICAgICMgVE9ETzogaXMgdGhpcyB1c2VmdWw/CiAgICB9CiAgfQogIGNsb3NlKCRpbik7CgogIHJldHVybiAxOwp9CgojIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4KCnN1YiBfd3JpdGVfaGlzdG9yeV9maWxlIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoZiA9ICRzZWxmLT5oaXN0b3J5X2ZpbGU7CiAgdW5sZXNzKGRlZmluZWQgJGhmIGFuZCBsZW5ndGggJGhmKSB7CiAgICBERUJVRyBhbmQgcHJpbnQgIk5vIGhpc3RvcnlfZmlsZSBkZWZpbmVkIGZvciAkc2VsZi5cbiI7CiAgICByZXR1cm47CiAgfQogIAogIG15ICRmaXJzdCA9ICRzZWxmLT57J19maXJzdF9zZWVuJ307CiAgbXkgJGxhc3QgID0gJHNlbGYtPnsnX2xhc3Rfc2VlbicgfTsKICBteSAkbm93ICAgPSB0aW1lKCk7CiAgCiAgbXkgJG91dDsKICBERUJVRyBhbmQgcHJpbnQgIlNhdmluZyB0byBoaXN0b3J5IGZpbGUgJGhmXG4iOwogIERFQlVHID4gMiBhbmQgcHJpbnRmICJUaW1lIG5vdzogJXMgPSAlc1xuIiwgdGltZSgpLCBzY2FsYXIobG9jYWx0aW1lKTsKICB7CiAgICBsb2NhbCAqSEY7CiAgICBvcGVuKEhGLCAiPiRoZiIpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGhmOiAkISI7ICAjIGluc2FuZQogICAgJG91dCA9ICpIRntJT307CiAgfQogIHsKICAgIG15KEBmLCBAeCk7CiAgICB7CiAgICAgIG15ICV4OwogICAgICBAeHtrZXlzICUkZmlyc3QsIGtleXMgJSRsYXN0fSA9ICgpOwogICAgICBAeCA9IHNvcnQga2V5cyAleDsKICAgIH0KCiAgICBteSAkZm9yZ2V0X2JlZm9yZTsKICAgIHsKICAgICAgbXkgJHIgPSAkc2VsZi0+cmV0ZW50aW9uOwogICAgICBpZiggJHIgYW5kICRyID4gMCApIHsgJGZvcmdldF9iZWZvcmUgPSB0aW1lKCkgLSAkciB9CiAgICB9CiAgICBmb3JlYWNoIG15ICRrZXkgKEB4KSB7CiAgICAgIG5leHQgaWYgJGtleSA9fiBtL1tcdFxuXHJdLzsKICAgICAgaWYoICRmb3JnZXRfYmVmb3JlIGFuZCAkbGFzdC0+eyRrZXl9IDwgJGZvcmdldF9iZWZvcmUgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ZigKICAgICAgICAgICIgRm9yZ2V0dGluZyAlcyBhcyBiZWluZyB0b28gb2xkIHNpbmNlIGxhc3Qtc2VlbiAoJXMgPSAlcylcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgJGxhc3QtPnska2V5fSwKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoJGxhc3QtPnska2V5fSkpLAogICAgICAgICk7CiAgICAgICAgbmV4dDsKICAgICAgfQogICAgICBwcmludCAkb3V0ICAgICAgJGtleSwgIlx0IiwKICAgICAgICAkZmlyc3QtPnska2V5fXx8JycsICJcdCIsCiAgICAgICAgICRsYXN0LT57JGtleX18fCcnLCAiXG4iLAogICAgICA7CiAgICAgIAogICAgICBpZihERUJVRyA+IDIpIHsKICAgICAgICBwcmludGYgIiAgS2V5ICVzXG4gICAgRmlyc3Qgc2VlbjogJXMgPSAlc1xuICAgIExhc3Qgc2VlbjogICVzID0gJXNcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpcnN0LT57JGtleX18fCctJywKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoICRmaXJzdC0+eyRrZXl9fHwwICApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdC0+eyRrZXl9fHwnLScsCiAgICAgICAgICBzY2FsYXIobG9jYWx0aW1lKCAgJGxhc3QtPnska2V5fXx8MCAgKSksCiAgICAgIH0KCiAgICB9CiAgICBjbG9zZSgkb3V0KTsKICB9CiAgREVCVUcgYW5kIHByaW50ICJEb25lIHNhdmluZyB0byAkaGZcbiI7CiAgcmV0dXJuIDE7Cn0KCiMtXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXwoKCj1pdGVtIEM8cnNzX2hvdXJseT4gSTxvcj4gQzxyc3NfZGFpbHk+IEk8b3I+IEM8cnNzX3R3aWNlX2RhaWx5PgogSTxvcj4gQzxyc3NfdGhyaWNlX2RhaWx5PiBJPG9yPiBDPHJzc193ZWVrbHk+IEk8b3I+IEM8cnNzX2V2ZXJ5X290aGVyX2hvdXI+CgpDYWxsaW5nIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMgZGVjbGFyZXMgdGhhdCB0aGlzIGZlZWQgaXMgdXN1YWxseQpnZW5lcmF0ZWQgYXQgdGhlIHNhbWUgdGltZShzKSBldmVyeSBkYXkgKG9yIGV2ZXJ5IHdlZWssIGluIHRoZSBjYXNlIG9mCkM8cnNzX3dlZWtseT4pLiBBbmQsIHdoZXJlIGl0J3Mgbm90IGp1c3Qgb25jZSBhIGRheS93ZWVrLCB0aGVzZSBtdWx0aXBsZQp0aW1lcyBhIGRheSBhcmUgZXZlbmx5IHNwYWNlZC4gIFRoZXNlIGZ1bmN0aW9ucyB0aGVuIHNldCB0aGUgZmVlZCdzCkM8dXBkYXRlUGVyaW9kPiwgQzx1cGRhdGVCYXNlPiwgQzx1cGRhdGVGcmVxdWVuY3k+LCBDPHNraXBIb3Vycz4sCkM8c2tpcERheXM+LCBhbmQgQzx0dGw+IGVsZW1lbnRzIGFwcHJvcHJpYXRlbHksIHNvIHRoYXQgUlNTIHJlYWRlcnMgY2FuIGtub3cgYXQKYXQgd2hhdCB0aW1lcyB0aGVyZSBjb3VsZCAob3IgY291bGRuJ3QpIGJlIG5ldyBjb250ZW50IGluIHRoaXMgZmVlZC4KCkluIG90aGVyIHdvcmRzOiB1c2UgQzxyc3NfdHdpY2VfZGFpbHk+IGlmIHRoaXMgZmVlZCBpcyB1cGRhdGVkIGF0IGFib3V0IHRoZQpzYW1lIHRpbWUgZXZlcnkgZGF5IGFuZCB0aGVuIGFnYWluIDEyIGhvdXJzIGxhdGVyLiAgVXNlIEM8cnNzX3RocmljZV9kYWlseT4KaWYgdGhpcyBmZWVkIGlzIHVwZGF0ZWQgYXQgdGhlIHNhbWUgdGltZSBkYWlseSwgYW5kIHRoZW4gOCBob3VycyBsYXRlciwgYW5kCnRoZW4gOCBob3VycyBsYXRlci4gIEFuZCB1c2UgQzxyc3NfZXZlcnlfb3RoZXJfaG91cj4gaWYgdGhlIGZlZWQgdXBkYXRlcwphdCBhYm91dCBJPG4+IG1pbnV0ZXMgcGFzdCBldmVyeSBldmVuIG51bWJlcmVkIGhvdXIsIG9yIGV2ZXJ5IG9kZC1udW1iZXJlZApob3VyLgoKQ2xlYXJseSBJIG1lYW4gdGhlc2UgZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW4gcHJvZ3JhbXMgdGhhdCBhcmUgY3JvbnRhYmJlZAp0byBydW4gYXQgcGFydGljdWxhciBpbnRlcnZhbHMsIGFzIHdpdGggYSBjcm9udGFiIGxpbmUgbGlrZSBvbmUgb2YgdGhlc2U6CgogICAgICAgNTIgKiAqICogKiAgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfaG91cmx5CiAgICAgICA1MiAyMyAqICogKiAgICAgICAgfi90aGluZ3kgICAjID0+IHJzc19kYWlseQogICAgICAgNTIgNCwxNiAqICogKiAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfdHdpY2VfZGFpbHkKICAgICAgIDUyIDUsMTMsMjEgKiAqICogICB+L3RoaW5neSAgICMgPT4gcnNzX3RocmljZV9kYWlseQogICAgICAgNTIgMjMgKiAqIDMgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3Nfd2Vla2x5CiAgICAgICA1MiAqLzIgKiAqICogICAgICAgfi90aGluZ3kgICAjID0+IHJzc19ldmVyeV9vdGhlcl9ob3VyCgpDbGVhcmx5IHRoZXJlIGFyZW4ndCBDPHJzc19JPGludGVydmFsPj4gZnVuY3Rpb25zIGZvciBhbGwgdGhlIHNjaGVkdWxpbmcKcG9zc2liaWxpdGllcyBwcm9ncmFtcyAtLSBpZiB5b3UgaGF2ZSBhIHByb2dyYW0gdGhhdCBoYXMgdG8gcnVuIGF0CjZhbSwgOGFtLCAxcG0sIGFuZCA0cG0sIHRoZXJlJ3Mgbm8gZnVuY3Rpb24gZm9yIHRoYXQuICBIb3dldmVyLCB0aGUgYWJvdmUKY3JvbnRhYiBsaW5lcyAob3Igd2l0aCBtaW5vciBjaGFuZ2VzLCBsaWtlIEM8MSw5LDE3PiBpbnN0ZWFkIG9mIEM8NSwxMywyMT4pCmFyZSBqdXN0IGZpbmUgZm9yIGFsbW9zdCBldmVyeSBSU1MgZmVlZCBJJ3ZlIHJ1bi4KCkFuIGFzaWRlOiBJIHJlY29tbWVuZCBydW5uaW5nIHRoZSBwcm9ncmFtcyBhdCBhYm91dCA1MiBtaW51dGVzIHBhc3QgdGhlIGhvdXIsCmdlbmVyYWxseSBpbiBzZXJpZXMsIGxpa2Ugc286CgogICAgICAgNTIgNSwxMywyMSAqICogKiAgIH4vdGhpbmd5IDsgfi9kb2RhZCA7IH4vbWFrZXRoaW5nIDsgfi9naXptbwoKSG93ZXZlciwgeW91ciBtaWxlYWdlIG1heSB2YXJ5LgoKSW5jaWRlbnRhbGx5LCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBubyBhcmd1bWVudHMsIHNvIHRoZSBwYXJlbnRoZXNlcyBhcmUKb3B0aW9uYWwuICBUaGF0IGlzLCB0aGVzZSB0d28gbGluZXMgZG8gdGhlIHNhbWUgdGhpbmc6CgogICAgICAgcnNzX2hvdXJseTsKICAgICAgIHJzc19ob3VybHkoKTsKCj1jdXQKCiMjIFNvbWUgaGFuZHkgaWYgc29tZXdoYXQgYXJiaXRyYXJ5IHNob3J0Y3V0czoKIwpzdWIgaG91cmx5IHsKICBteSAkc2VsZiA9ICRfWzBdOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ2hvdXJseScpOwogICRzZWxmLT50dGwoJzYwJyk7CiAgcmV0dXJuOwp9CgpzdWIgZGFpbHkgewogIG15ICRzZWxmID0gJF9bMF07CiAgJHNlbGYtPnVwZGF0ZUhvdXJzKCk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknKTsKICAkc2VsZi0+dHRsKCAyNCAqIDYwICk7CiAgcmV0dXJuOwp9CgpzdWIgdHdpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKzEyKSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDIpOwogICRzZWxmLT50dGwoIDEyICogNjAgKTsKICByZXR1cm47Cn0KCnN1YiB0aHJpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKyA4KSAlIDI0LCAgKCRoKzE2KSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDMpOwogICRzZWxmLT50dGwoIDggKiA2MCApOwogIHJldHVybjsKfQoKc3ViIHdlZWtseSB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoKTsKICAkc2VsZi0+dXBkYXRlRGF5cygpOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ3dlZWtseScsMSk7CiAgJHNlbGYtPnR0bCggNyAqIDI0ICogNjAgKTsKICByZXR1cm47Cn0KCnsKbXkoQG9kZHMsIEBldmVucyk7CmZvcigwIC4uIDIzKSB7IHB1c2ggQHsgICgkXyAmIDEpID8gXEBvZGRzIDogXEBldmVucyAgfSwgJF8gfQoKc3ViIGV2ZXJ5X290aGVyX2hvdXIgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGggPSAoZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkpWzJdOwogICRzZWxmLT5za2lwSG91cnMoICgkaCAmIDEpID8gQGV2ZW5zIDogQG9kZHMpOyAKICAkc2VsZi0+dXBkYXRlUGVyaW9kKCdkYWlseScsMTIpOwogICRzZWxmLT50dGwoICcxMjAnICk7CiAgcmV0dXJuOwp9Cn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBAZGF5X25hbWVzID0gKAogIlN1bmRheSIsICJNb25kYXkiLCAiVHVlc2RheSIsICJXZWRuZXNkYXkiLCAiVGh1cnNkYXkiLCAiRnJpZGF5IiwgIlNhdHVyZGF5IiwgCik7Cm15ICVpc19kYXlfbmFtZTsKQGlzX2RheV9uYW1le0BkYXlfbmFtZXN9ID0gQGRheV9uYW1lczsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9ub3dfcm91bmRlZF91cCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbm93ID0gJF9bMF17J19mb3JjZV9ub3cnfSAgICMgdG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzCiAgICB8fCB0aW1lKCk7CiAgaWYoICRDSFVOS19NSU5VVEVTICkgewogICAgbXkgJHR3ZWFrID0gKCRDSFVOS19NSU5VVEVTICogNjApIC0gKCRub3cgJSAoJENIVU5LX01JTlVURVMgKiA2MCkpOwogICAgREVCVUcgYW5kIHByaW50ICJUd2Vha2luZyAkbm93ICgiLCBzY2FsYXIoZ210aW1lKCRub3cpKSwKICAgICAgIiBHTVQpIGJ5ICR0d2VhayBzZWNvbmRzXG4gc28gaXQnbGwgYmUgYW4gZXZlbiAkQ0hVTktfTUlOVVRFUyBtaW51dGVzOiAiOwogICAgJG5vdyArPSAkdHdlYWs7CiAgICBERUJVRyBhbmQgcHJpbnQgIiRub3cgKCIsIHNjYWxhcihnbXRpbWUoJG5vdykpLCAiIEdNVClcbiI7CiAgfSBlbHNlIHsKICAgICMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhCiAgICBERUJVRyBhbmQgcHJpbnQgIkFyY2hvcmluZyB0aW1lYmFzZSB0byByaWdodCB0aGlzIG1vbWVudC5cbiI7CiAgfQogIHJldHVybiAkbm93Owp9CgpzdWIgX25vdyB7IHJldHVybiAkX1swXXsnX2ZvcmNlX25vdyd9IHx8IHRpbWUoKSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCj1iYWNrCgo9aGVhZDIgTUlOT1IgRlVOQ1RJT05TCgpUaGVzZSBhcmUgZnVuY3Rpb25zIHRoYXQgeW91IHByb2JhYmx5IHdvbid0IG5lZWQgb2Z0ZW4sIG9yIGF0IGFsbC4gIEkgaW5jbHVkZQp0aGVzZSBmb3IgdGhlIHNha2Ugb2YgY29tcGxldGVuZXNzLCBhbmQgc28gdGhhdCBhZHZhbmNlZCB1c2VycyBtaWdodCBmaW5kIHRoZW0KdXNlZnVsIGluIHNvbWUgY2FzZXMuCgo9b3ZlcgoKPWl0ZW0gQzxyc3Nfc2tpcEhvdXJzKCBJPGdtdF9ob3VyX251bSwgZ210X2hvdXJfbnVtLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBIb3Vycz4gZWxlbWVudCdzIHZhbHVlcyB0byB0aGUKc3BlY2lmaWVkIEdNVCBob3VyIG51bWJlcnMuCgo9Y3V0CgpzdWIgc2tpcEhvdXJzIHsKICBteSgkc2VsZiwgQGluKSA9IEBfOwogIG15IEBza2lwaG91cnM7CiAgZm9yZWFjaCBteSAkaG91ciAoQGluKSB7CiAgICBuZXh0IHVubGVzcyBkZWZpbmVkICRob3VyOwogICAgQ2FycDo6Y3JvYWsgIlwiJGhvdXJcIiBpc24ndCBhIHZhbGlkIGhvdXIgbnVtYmVyIChtdXN0IGJlIDAtMjMpIgogICAgIHVubGVzcyAkaG91ciA8PSAyNCBhbmQgJGhvdXIgPj0gMDsKICAgIHB1c2ggQHNraXBob3VycywgKCRob3VyID09IDI0KSA/IDAgOiAoMCArICRob3VyKTsKICAgICAjIHRvbGVyYXRlICIyNCIgdG8gbWVhbiAwaC4KICB9CiAgREVCVUcgYW5kIHByaW50ICJTa2lwZGF5czogQHNraXBob3Vyc1xuIjsKICAkc2VsZi0+eydza2lwSG91cnMnfSA9IGpvaW4gJycsCiAgICAiPHNraXBIb3Vycz4iLCBtYXAoICI8aG91cj4kXzwvaG91cj4iLCBAc2tpcGhvdXJzKSwgIjwvc2tpcEhvdXJzPlxuIgogIDsKICByZXR1cm47Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlSG91cnMoKTs+Cgo9aXRlbSBDPHJzc191cGRhdGVIb3VycyggSTxnbXRfaG91cl9udW0sIGdtdF9ob3VyX251bSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwSG91cnM+IC0tIHlvdSBjYWxsCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aXRoIGEgbGlzdCBvZiBHTVQgaG91ciBudW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aWxsIGNhbGwgQzxyc3Nfc2tpcEhvdXJzKDAgLi4gMjMpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBob3VyIG51bWJlcnMgeW91IHNwZWNpZmllZC4KCklmIHlvdSBjYWxsIHdpdGggYW4gZW1wdHkgbGlzdCAoaS5lLiwgQzxyc3NfdXBkYXRlSG91cnMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBob3VyIChhbmQgcm91bmRzIGl0IHVwCmlmIGl0J3MgYWZ0ZXIgNTAgbWludXRlcyBwYXN0KSwgYmFzaWNhbGx5IGp1c3QgYXMgaWYgeW91J2QgY2FsbGVkOgoKICAgICAgcnNzX3VwZGF0ZUhvdXJzKCAoZ210aW1lKDYwMCt0aW1lKCkpKVsyXSApOwoKPWN1dAoKc3ViIHVwZGF0ZUhvdXJzIHsgIyBKdXN0IHRoZSBjb21wbGVtZW50IG9mIHNraXBIb3Vycy4KICAjIEZlZWRpbmcgaXQgKCkgbWVhbnMgdXBkYXRlcyBvbmx5IGF0IHRoaXMgaG91ciBvZiBkYXkKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlSG91cnMgaXMgbmV2ZXIsIGkuZS4gd2hvc2Ugc2tpcEhvdXJzCiAgIyBpcyBhbGwgb2YgMC0yMykKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVob3VyczsKICBAaG91cnN7ICBAXyAgPyAgKG1hcCAkXyswLCBAXykgIDoKICAgICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVsyXSAgfSA9ICgpOwogICMgbWlnaHQgYXMgd2VsbCBjb3VudCAxMDo1NyBhcyAxMWgsIGV0YwogIERFQlVHIGFuZCBwcmludCAiSE9VUlMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlaG91cnMpLCAiXG4iOwogICRzZWxmLT5za2lwSG91cnMoIGdyZXAgIWV4aXN0cygkaG91cnN7JF99KSwgMCAuLiAyMyApOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19za2lwRGF5cygpOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbnVtLCBnbXRfZGF5X251bSwgLi4uPiApOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbmFtZSwgZ210X2RheV9uYW1lLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBEYXlzPiBlbGVtZW50J3MgdmFsdWVzIHRvIHRoZQpzcGVjaWZpZWQgd2Vla2RheXMuICBOb3RlIHRoYXQgdGhpcyBhY2NlcHRzIGVpdGhlciBpbnRlZ2VycyAobGlrZQo2IGZvciBTYXR1cmRheSwgU3VuZGF5IGJlaW5nIGVpdGhlciAwIG9yIDcpLCBvciB0aGVpciBleGFjdApFbmdsaXNoIG5hbWVzLgoKSWYgeW91IHVzZSB0aGUgQzxza2lwRGF5cz4gZmllbGQsIGNvbnNpZGVyIHRoYXQgaXQgcmVmZXJzIHRvIGRheXMKZmlndXJlZCBieSBHTVQsIG5vdCBsb2NhbCB0aW1lLiAgRm9yIGV4YW1wbGUsIGlmIEkgc2F5IHRvIHNraXAgU2F0dXJkYXlzLAp0aGF0IG1lYW5zIFNhdHVyZGF5cyBHTVQsIHdoaWNoIGluIG15IHRpbWV6b25lIChBbGFza2EpIHN0YXJ0cwppbiB0aGUgbWlkZGxlIG9mIEZyaWRheSBhZnRlcm5vb24uCgo9Y3V0CgpzdWIgc2tpcERheXMgewogIG15KCRzZWxmLEBpbikgPSBAXzsKICBteSBAc2tpcGRheXM7CiAgZm9yZWFjaCBteSAkZGF5IChAaW4pIHsKICAgIG5leHQgdW5sZXNzIGRlZmluZWQgJGRheTsKICAgIGlmKCRkYXkgPX4gbS9eWzAtN10kL3MpIHsgIyB0b2xlcmF0ZSBudW1lcmljIGRheSBzcGVjcwogICAgICAkZGF5ID0gMCBpZiAkZGF5ID09IDc7CiAgICAgICRkYXkgPSAkZGF5X25hbWVzWyRkYXldCiAgICAgICB8fCBDYXJwOjpjcm9hayAiRGF5IG51bWJlciBcIiRkYXlcIiBpcyBvdXQgb2YgcmFuZ2UgKDAtNikiOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y3JvYWsgIlwiJGRheVwiIGlzbid0IGEgdmFsaWQgZGF5IG5hbWUgKHVzZSAwLTYgb3Igb25lIG9mOiBAZGF5X25hbWVzKSIKICAgICAgIHVubGVzcyAkaXNfZGF5X25hbWV7JGRheX07CiAgICB9CiAgICBwdXNoIEBza2lwZGF5cywgJGRheTsKICB9OwogIAogIERFQlVHIGFuZCBwcmludCAiU2tpcGRheXM6IEBza2lwZGF5c1xuIjsKICAkc2VsZi0+eydza2lwRGF5cyd9ID0gam9pbiAnJywKICAgICI8c2tpcERheXM+IiwgbWFwKCAiPGRheT4kXzwvZGF5PiIsIEBza2lwZGF5cyksICI8L3NraXBEYXlzPlxuIgogIDsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cygpOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZURheXMoIEk8Z210X2RheV9udW0sIGdtdF9kYXlfbnVtLCAuLi4+ICk7PgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cyggSTxnbXRfZGF5X25hbWUsIGdtdF9kYXlfbmFtZSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwRGF5cz4gLS0geW91IGNhbGwKQzxyc3NfdXBkYXRlRGF5cz4gd2l0aCBhIGxpc3Qgb2YgR01UIGRheSBuYW1lcy9udW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZURheXM+IHdpbGwgY2FsbCBDPHJzc19za2lwRGF5cygwIC4uIDYpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBkYXlzIHlvdSBzcGVjaWZpZWQuCgpJZiB5b3UgY2FsbCB3aXRoIGFuIGVtcHR5IGxpc3QgKGkuZS4sIEM8cnNzX3VwZGF0ZURheXMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBkYXkgKEdNVCEpLCBiYXNpY2FsbHkKanVzdCBhcyBpZiB5b3UnZCBjYWxsZWQ6CgogICAgICByc3NfdXBkYXRlRGF5cyggKGdtdGltZSg2MDArdGltZSgpKSlbNl0gKTsKCgo9Y3V0CgpzdWIgdXBkYXRlRGF5cyB7ICMganVzdCB0aGUgY29tcGxlbWVudCBvZiBza2lwRGF5cwogICMgRmVlZGluZyBpdCAoKSBtZWFucyB1cGRhdGVzIG9ubHkgYXQgdGhpcyBkYXkgb2YgdGhlIHdlZWsKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlRGF5cyBpcyBuZXZlciwgaS5lLiwgd2hvc2UgdXBkYXRlRGF5cwogICMgaXMgYWxsIG9mIE1vbmRheSB0aHJ1IFN1bmRheSkKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVkYXlzOwogIEBkYXlzewogICAgbWFwIHs7CiAgICAgIG0vXlswLTddJC8gPyAkZGF5X25hbWVzWyAoJF8gPT0gNykgPyAwIDogJF8gXQogICAgICA6ICRpc19kYXlfbmFtZXskX30gPyAkXwogICAgICA6IENhcnA6OmNyb2FrICJcIiRfXCIgaXNuJ3QgYSB2YWxpZCBkYXkgbmFtZSAodXNlIDAtNiBvciBvbmUgb2Y6IEBkYXlfbmFtZXMpIgogICAgfQogICAgQF8gPyBAXyA6ICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVs2XQogIH0gPSAoKTsKICBERUJVRyBhbmQgcHJpbnQgIkRBWVMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlZGF5cyksICJcbiI7CiAgJHNlbGYtPnNraXBEYXlzKCBncmVwICFleGlzdHMoJGRheXN7JF99KSwgQGRheV9uYW1lcyApOwogIHJldHVybjsKfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlUGVyaW9kPiBlbGVtZW50J3MgdmFsdWUgdG8gdGhlCnBlcmlvZCBzcGVjaWZpZWQuICBZb3UgbXVzdCBzcGVjaWZ5IG9uZSBvZiB0aGUgc3RyaW5nczoKInllYXJseSIsICJtb250aGx5IiwgIndlZWtseSIsICJkYWlseSIsICJob3VybHkiLgpJIGFkdmlzZSB1c2luZyAid2Vla2x5IiBvbmx5IGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBhbmQKInllYXJseSIsICJtb250aGx5IiBvbmx5IGlmIHlvdSBJPHJlYWxseT4ga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KCj1pdGVtIEM8cnNzX3VwZGF0ZVBlcmlvZCggSTxwZXJpb2RzdHJpbmc+LCBJPGludD4sIEk8YmFzZT4gKTs+CgpUaGlzIGlzIGEgc2hvcnRjdXQgZm9yCkM8PApyc3NfdXBkYXRlUGVyaW9kKEk8cGVyaW9kc3RyaW5nPik7IHJzc191cGRhdGVGcmVxdWVuY3koSTxpbnQ+KQo+PgoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4sIEk8aW50PiwgSTxiYXNlPiApOz4KClRoaXMgaXMgYSBzaG9ydGN1dCBmb3IKQzw8CnJzc191cGRhdGVQZXJpb2QoSTxwZXJpb2RzdHJpbmc+KTsgcnNzX3VwZGF0ZUZyZXF1ZW5jeShJPGludD4pOwpyc3NfdXBkYXRlQmFzZShJPGJhc2U+KQo+PgoKPWN1dAoKc3ViIHVwZGF0ZVBlcmlvZCB7CiAgcmV0dXJuICRfWzBdLT57J3VwZGF0ZVBlcmlvZCd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICRwZXJpb2QpID0gQF87CiAgJHBlcmlvZCBvciBDYXJwOjpjb25mZXNzKAogICAiV2hhdCBwZXJpb2Q/IHllYXJseS9tb250aGx5L3dlZWtseS9kYWlseS9ob3VybHk/Iik7CgogIGlmKCRwZXJpb2QgPX4gbS9eKHllYXJseXxtb250aGx5fHdlZWtseXxkYWlseXxob3VybHkpJC9zKSB7CiAgICAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfSA9ICRwZXJpb2Q7CiAgICAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCRfWzJdKSBpZiBAXyA+IDI7CQogICAgJHNlbGYtPnVwZGF0ZUJhc2UoJF9bM10pIGlmIEBfID4gMzsKICAgICRzZWxmLT57J19uYW1lc3BhY2VzJ317J3N5J30gPSAkTkFNRVNQQUNFX1NZOwogICAgcmV0dXJuICRwZXJpb2Q7CiAgfSBlbHNlIHsKICAgIENhcnA6OmNvbmZlc3MoCiAgICAgIldoYXQga2luZCBvZiBwZXJpb2QgaXMgXCIkcGVyaW9kXCI/ICBVc2Ugb25lIG9mOiB5ZWFybHl8bW9udGhseXx3ZWVrbHl8ZGFpbHl8aG91cmx5Iik7CiAgfQp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8aXNvX2RhdGVfc3RyaW5nPiApOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8ZXBvY2hfdGltZT4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlQmFzZT4gZWxlbWVudCdzIHZhbHVlIHRvIHRoZQptb21lbnQgc3BlY2lmaWVkLiAgSWYgeW91IHBhc3MgaW4gYW4gZXBvY2ggdGltZSwgaXQgaXMgY29udmVydGVkIHRvCmFuIElTTyBkYXRlIHN0cmluZy4KCj1jdXQKCnN1YiB1cGRhdGVCYXNlIHsKICByZXR1cm4gJF9bMF0tPnsndXBkYXRlQmFzZSd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICR0aGVuKSA9IEBfOwogIGlmKCAkdGhlbiA9fiBtL14tP1xkKyQvcyApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICRzZWxmLT5fZXBvY2gyaXNvZGF0ZSgkdGhlbik7CiAgfSBlbHNpZiAoICR0aGVuID1+ICAjIGJhc2ljYWxseSBJU084NjAxCiAgICAgIG08XgogICAgICAgIFxkXGRcZFxkCQkjIHllYXIKICAgICAgICAoPzoKICAgICAgICAgIC1cZFxkCQkJIyBtb250aAogICAgICAgICAgKD86CiAgICAgICAgICAgIC1cZFxkICAjIGRheQogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICBUXGRcZDpcZFxkCSMgaGg6bW0KICAgICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIDpcZFxkCQkjIHNlY29uZHMKICAgICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgICBcLlxkKwkJIyBmcmFjdGlvbnMgb2YgYSBzZWNvbmQKICAgICAgICAgICAgICAgICk/CiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAoPzoJCSMgVFogb2Zmc2V0CiAgICAgICAgICAgICAgICBaCQkjIFp1bHUKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgKD86CQkjIG9yIGJ5IG9mZnNldDoKICAgICAgICAgICAgICAgICAgWy0rXQogICAgICAgICAgICAgICAgICBcZFxkOlxkXGQgICAgICMgaGg6bW0sIHdpdGggbGVhZGluZyAnKycgb3IgJy0nCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgKT8KICAgICAgICAgICk/CiAgICAgICAgICAKICAgICAgICApPwogICAgICAgICAjIFRoZSBtb250aCB3YXMgb3B0aW9uYWwsIGJ1dCB0aGF0CiAgICAgICAgICMgIG1ha2VzICIxOTk0IiBhbWJpZ3VvdXMgLS0gYSB5ZWFyIG9yIGFuIGVwb2NoIHRpbWU/CiAgICAgICAgICMgSSBkb3VidCBhbnlvbmUgd2FudHMgdG8gd3JpdGUgPHVwZGF0ZUJhc2U+MjAwMDwvdXBkYXRlQmFzZT4sCiAgICAgICAgICMgIGVzcCBhcyB0aGUgZGVmYXVsdCBpcyBiYXNpY2FsbHkgPT0gPHVwZGF0ZUJhc2U+MTk3MDwvdXBkYXRlQmFzZT4uCiAgICAgICAgJAogICAgICA+c3gKICApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICR0aGVuOwogIH0gZWxzZSB7CiAgICBDYXJwOjpjb25mZXNzKCJXaGF0IGtpbmQgb2YgdXBkYXRlQmFzZSBpcyBcIiR0aGVuXCI/Iik7CiAgfQogIHJldHVybiAkc2VsZi0+eyd1cGRhdGVCYXNlJ307Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQpzdWIgX2Vwb2NoMmlzb2RhdGUgewogIG15KCRzZWxmLCAkdGltZSkgPSBAXzsKICBteShAdGltZWxpc3QpID0gZ210aW1lKCR0aW1lKTsKICArKyR0aW1lbGlzdFs0XTsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKICByZXR1cm4gc3ByaW50ZigiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkKzAwOjAwIiwKICAgICAgIEB0aW1lbGlzdFsgNSwgICA0LCAgIDMgICwgMiAgICwxICBdKTsKICAgICAgIAp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KJVBlcmlvZEFzU2Vjb25kcyA9ICgKICAnaG91cmx5JyA9PiA2MCAqIDYwLAogICdkYWlseScgID0+IDYwICogNjAgKiAyNCwKICAnd2Vla2x5JyA9PiA2MCAqIDYwICogMjQgKiA3LAopOwoKc3ViIF91cGRhdGVCYXNlX2luaXQgewogICMgV2hhdCB0byBkbz8gIFBlZyBpdCBvbiBub3cgcGx1cyBJbnRlcnZhbCwgcm91bmRlZCB1cCB0byBuZXh0IE0tbWludXRlIGludGVydmFsPwogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJG5vdyA9ICRzZWxmLT5fbm93X3JvdW5kZWRfdXA7CiAgCiAgbXkgJHBlcmlvZF90eXBlID0gJHNlbGYtPnVwZGF0ZVBlcmlvZDsKICBpZiggJHBlcmlvZF90eXBlIGVxICdtb250aGx5JyBvciAkcGVyaW9kX3R5cGUgZXEgJ3llYXJseScpIHsKICAgICRub3cgPSAkc2VsZi0+X2Vwb2NoMmlzb2RhdGUoICRub3cgKTsKICAgIGlmKCRwZXJpb2RfdHlwZSBlcSAneWVhcmx5JykgewogICAgICAkbm93ID1+ICAgICAgIHMvXi4uLi4tLzIwMDAtL3MgfHwgZGllICJTUE9SSzkzOTMxISI7ICMgc2FuaXR5CiAgICB9IGVsc2lmKCRwZXJpb2RfdHlwZSBlcSAnbW9udGhseScpIHsKICAgICAgJG5vdyA9fiBzL14uLi4uLS4uLS8yMDAwLTAxLS9zIHx8IGRpZSAiU1BPUkszNTI4NiEiOyAjIHNhbml0eQogICAgfSBlbHNlIHsKICAgICAgZGllICJTUE9SSyEhISEhOTQ4MjkwNDUiOyAjc2FuaXR5CiAgICB9CiAgICBERUJVRyA+IDFhbmQgcHJpbnQgIlVzaW5nICRub3cgYXMgdXBkYXRlQmFzZS5cbiI7CiAgfSBlbHNlIHsKICAgICMgSXQncyBhIHBsYWluIG9sJyBpbnRlcnZhbC4KICAgIERFQlVHID4gMSBhbmQgcHJpbnQgIlNsYXBwaW5nICRub3cgKCIsIGdtdGltZSgkbm93KS4gIiBpbnRvIDE5NzAuXG4iOwogICAgbXkgJGZyZXEgPSAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCk7CiAgICBteSAkaW50ZXJ2YWxfYXNfc2Vjb25kcyA9IGludCgKICAgICAgKCRQZXJpb2RBc1NlY29uZHN7JHBlcmlvZF90eXBlfSB8fGRpZSAiU1BPUks4NDI1OCBvbiAnJHBlcmlvZF90eXBlJyEiKQogICAgICAvICRmcmVxKQogICAgOwogICAgREVCVUcgPiAxIGFuZCBwcmludAogICAgICJTbywgJGZyZXEgdGltZXMgJHBlcmlvZF90eXBlIGlzICRpbnRlcnZhbF9hc19zZWNvbmRzIHNlY29uZHMuLi5cbiI7CiAgICAkbm93ICU9ICRpbnRlcnZhbF9hc19zZWNvbmRzOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiVXNpbmcgJG5vdyAoIiwgZ210aW1lKCRub3cpLiAiIGFzIHVwZGF0ZUJhc2UuXG4iOwogIH0KICAkc2VsZi0+dXBkYXRlQmFzZSgkbm93KTsKICByZXR1cm47Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3VwZGF0ZUZyZXF1ZW5jeSggSTxpbnRlZ2VyPiApOz4KClRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgc2V0cyB0aGUgQzxzeTp1cGRhdGVGcmVxdWVuY3k+IGVsZW1lbnQncyB2YWx1ZSB0byB0aGUKdmFsdWUgc3BlY2lmaWVkLiAgVGhlIHZhbHVlIGhhcyB0byBiZSBhIG5vbnplcm8gcG9zaXRpdmUgaW50ZWdlci4KCkZvciBleGFtcGxlLCB0aGlzIG1lYW5zIHRoYXQgdGhpcyBmZWVkIHVwZGF0ZXMgYXQvYnkgdGhlIHN0YXJ0IG9mIGV2ZXJ5IGhvdXIKYW5kIDMwIG1pbnV0ZXMgcGFzdDoKCiAgcnNzX3VwZGF0ZUJhc2UoJzIwMDAtMDEtMDFUMDA6MDAtMDA6MDAnKTsKICByc3NfdXBkYXRlRnJlcXVlbmN5KDIpOwogIHJzc191cGRhdGVQZXJpb2QoJ2hvdXJseScpOyAgIyAyKmhvdXJseSBtZWFucyAidHdpY2UgYW4gaG91ciIKClJlY2FsbCB0aGF0IHRoaXMgY2FuIGFsc28gYmUgZG9uZSB3aXRoIHRoZQp0aGUgQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcj4sIEk8ZnJlcT4sIEk8YmFzZT4gKT4gc2hvcnRjdXQsIGxpa2Ugc286CgogIHJzc191cGRhdGVCYXNlKCdob3VybHknLCAyLCAnMjAwMC0wMS0wMVQwMDowMC0wMDowMCcpOwoKPWN1dAoKc3ViIHVwZGF0ZUZyZXF1ZW5jeSB7ICMgc2ltcGxlIGFjY2Vzc29yLCBwbHVzIHRoZSBpbnQoKSB0aGluZwogIGlmKEBfID4gMSkgewogICAgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gPSBpbnQoJF9bMV0pIHx8IDE7CiAgfSBlbHNlIHsKICAgICRfWzBdLT57J3VwZGF0ZUZyZXF1ZW5jeSd9CiAgfQp9CgpzdWIgX3VwZGF0ZUZyZXF1ZW5jeV9pbml0IHsgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gfHw9IDEgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgX3N5X3VwZGF0ZV9hc194bWwgewogIG15ICRzZWxmID0gJF9bMF07CiAgcmV0dXJuICcnIHVubGVzcyAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfTsKICAkc2VsZi0+X3VwZGF0ZUZyZXF1ZW5jeV9pbml0KCk7CiAgJHNlbGYtPl91cGRhdGVCYXNlX2luaXQoKTsKICByZXR1cm4gc3ByaW50ZigKCnF7PHN5OnVwZGF0ZUZyZXF1ZW5jeT4lczwvc3k6dXBkYXRlRnJlcXVlbmN5Pgo8c3k6dXBkYXRlUGVyaW9kPiVzPC9zeTp1cGRhdGVQZXJpb2Q+CjxzeTp1cGRhdGVCYXNlPiVzPC9zeTp1cGRhdGVCYXNlPgp9LAogICAgJHNlbGYtPnVwZGF0ZUZyZXF1ZW5jeSwKICAgICRzZWxmLT51cGRhdGVQZXJpb2QsCiAgICAkc2VsZi0+dXBkYXRlQmFzZSwKICApOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgQWxpYXNlczoKc3ViIHNraXBfaG91cnMgICAgICAge3NoaWZ0LT5za2lwSG91cnMoICAgICAgIEBfKX0Kc3ViIHNraXBfZGF5cyAgICAgICAge3NoaWZ0LT5za2lwRGF5cyggICAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9kYXlzICAgICAge3NoaWZ0LT51cGRhdGVEYXlzKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9ob3VycyAgICAge3NoaWZ0LT51cGRhdGVIb3VycyggICAgIEBfKX0Kc3ViIHVwZGF0ZV9wZXJpb2QgICAge3NoaWZ0LT51cGRhdGVQZXJpb2QoICAgIEBfKX0Kc3ViIHVwZGF0ZV9iYXNlICAgICAge3NoaWZ0LT51cGRhdGVCYXNlKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9mcmVxdWVuY3kge3NoaWZ0LT51cGRhdGVGcmVxdWVuY3koIEBfKX0Kc3ViIHdlYm1hc3RlciAgICAgICAge3NoaWZ0LT53ZWJNYXN0ZXIoICAgICAgIEBfKX0KCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc19yZXRlbnRpb24oSTxudW1iZXI+KT4KCklmIHlvdSBhcmUgdXNpbmcgYW4gQzxyc3NfaGlzdG9yeV9maWxlKEk8ZmlsZT4pPiwgdGhlIGhpc3RvcnkgZmlsZSB3aWxsCmFjY3JldGUgYSBsaXN0IG9mIGFsbCBVUkxzIGl0IGhhcyBzZWVuLiAgQnV0IHRvIGtlZXAgdGhpcyBmaWxlIGZyb20gcG90ZW50aWFsbHkKZ2V0dGluZyBpbW1lbnNlLCBpdGVtcyB0aGF0IGhhdmVuJ3QgYmVlbiBzZWVuIGZvciBhIHdoaWxlIGFyZSB0aHJvd24gb3V0LgpUaGUgcGVyaW9kIG9mIHRpbWUgYSBmZWVkJ3MgaXRlbXMgZ28gdW5zZWVuIGJlZm9yZSBlYWNoIGlzIGZvcmdvdHRlbiBpcwpjYWxsZWQgdGhhdCBmZWVkJ3MgQjxyZXRlbnRpb24+LCBhbmQgaXMgZXhwcmVzc2VkIGluIHNlY29uZHMuCgpUaGUgZGVmYXVsdCByZXRlbnRpb24gdmFsdWUgaXMgMzIgZGF5cyAoaS5lLiwgMzIqMjQqNjAqNjAsIHRoZSBudW1iZXIKb2Ygc2Vjb25kcyBpbiAzMiBkYXlzKS4gIElmIHlvdSB3YW50ZWQgdG8gY2hhbmdlIGl0IHRvIGp1c3QgYSB3ZWVrLAp5b3Ugd291bGQgZG8gdGhpcyB3aXRoIEM8cnNzX3JldGVudGlvbig3KjI0KjYwKjYwKT4uCgpBcyBhIHNwZWNpYWwgY2FzZSwgYSB6ZXJvIG9yIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgcmV0ZW50aW9uIG1lYW5zCnRvIG5ldmVyIGNsZWFyIGFueXRoaW5nIGZyb20gdGhlIGhpc3RvcnkgZmlsZSwgbm8gbWF0dGVyIGhvdyBsb25nCml0IGhhcyBnb25lIHVuc2Vlbi4KCj1jdXQKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYWRkX2NvbW1lbnQoIEk8c3RyaW5ncz4gKTs+CgpDYWxsIHRoaXMgZnVuY3Rpb24gaWYgeW91IHdhbnQgdG8gYWRkIGV4dHJhIFhNTCBjb21tZW50cyB0byB0aGlzIFJTUyBmaWxlLgpGb3IgZXhhbXBsZSwgaWYgeW91IGNhbGwgdGhpczoKCiAgICAgICAgcnNzX2FkZF9jb21tZW50KAogICAgICAgICAgIk91ciB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93aGVyZXZlci5pbnQvcnNzdG91Lmh0bWwiLAogICAgICAgICAgIkFueSBxdWVzdGlvbnM/IEFzayBqaW1teUB3aGVyZXZlci5pbnQiLAogICAgICAgICk7CgouLi50aGVuIHRoaXMgUlNTIGZlZWQgd2lsbCBjb250YWluIHRoaXMgWE1MIGZhaXJseSBlYXJseSBvbiBpbiB0aGUgZmlsZToKCiAgICAgICAgPCEtLSBPdXIgdGVybXMgb2YgdXNlOiBodHRwOi8vd2hlcmV2ZXIuaW50L3Jzc3RvdS5odG1sIC0tPgogICAgICAgIDwhLS0gQW55IHF1ZXN0aW9ucz8gQXNrIGppbW15QHdoZXJldmVyLmludCAtLT4KCj1jdXQKCnN1YiBhZGRfY29tbWVudCB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBmb3JlYWNoIG15ICRjIChAXykgewogICAgcHVzaCBAeyAkc2VsZi0+eydfY29tbWVudHMnfSB9LCAkYwogICAgIGlmIGRlZmluZWQgJGMgYW5kIGxlbmd0aCAkYyBhbmQgJGMgPX4gbS9cUy87CiAgICAgICMgbm8gcG9pbnQgaW4gaGF2aW5nIGNvbnRlbnRsZXNzIGNvbW1lbnRzCiAgfQogIHJldHVybjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfY3NzKCBJPHVybD4gKT4KClRoaXMgZGVmaW5lcyB0aGUgZ2l2ZW4gVVJMIGFzIGJlaW5nIHRoZSBYTUwtQ1NTIHN0eWxlc2hlZXQgZm9yIHRoaXMgUlNTCmZlZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiLi9yc3MuY3NzIiBpZiBDPC1lICJyc3MuY3NzIj4gaXMgdHJ1ZSwgb3RoZXJ3aXNlCmlzIHRoZSB2YWx1ZSBodHRwOi8vd3d3LmludGVyZ2xhY2lhbC5jb20vcnNzL3Jzcy5jc3MKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc194c2woIEk8dXJsPiApPgoKVGhpcyBkZWZpbmVzIHRoZSBnaXZlbiBVUkwgYXMgYmVpbmcgdGhlIFhNTC1YU0wgc3R5bGVzaGVldCBmb3IgdGhpcyBSU1MKZmVlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG5vbmUuCgo9aXRlbSBUaGUgYWNjZXNzb3JzCkM8PApyc3NfdXJsKCBJPHN0cmluZz4gKSwgcnNzX3RpdGxlKCBJPHN0cmluZz4gKSwgcnNzX2Rlc2NyaXB0aW9uKCBJPHN0cmluZz4gKQo+PgoKVGhlc2UgZGVmaW5lIHRoaXMgZmVlZCdzIFVSTCwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbi4gIFRoZXNlIGZ1bmN0aW9ucwphcmUganVzdCBmb3IgY29tcGxldGVuZXNzLCBzaW5jZSBpdCdzIHNpbXBsZXIgdG8ganVzdCBzcGVjaWZ5IGFueS9hbGwgb2YKdGhlc2UgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBDPHJzc19uZXc+LgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3R0bCggSTxudW1iZXI+ICk+CgpUaGlzIHNldHMgdGhlIHBhcmFtZXRlciBvZiB0aGlzIFJTUyBmZWVkJ3MgQzx0dGw+IGVsZW1lbnQsIHdoaWNoCnN1Z2dlc3RzIGhvdyBsb25nIChpbiBtaW51dGVzLCBub3Qgc2Vjb25kcyEpIGFuIFJTUyByZWFkZXIgc2hvdWxkIHdhaXQgYWZ0ZXIgaXQgcG9sbHMKYSBmZWVkIHVudGlsIGl0IHBvbGxzIGl0IGFnYWluLiAgRm9yIGV4YW1wbGUsIEM8cnNzX3R0bCg5MCk+IHdvdWxkIHN1Z2dlc3QKdGhhdCBhIHJlYWRlciBzaG91bGQgbm90IHBvbGwgdGhpcyBmZWVkIG1vcmUgb2Z0ZW4gdGhhbiBldmVyeSA5MCBtaW51dGVzLgoKKFRoaXMgZWxlbWVudCBpcyBzb21ld2hhdCBvYnNvbGVzY2VudCBuZXh0IHRvIHRoZSBuZXdlciBhbmQgbW9yZQppbmZvcm1hdGl2ZSBDPHN5OnVwZGF0ZSo+IGVsZW1lbnRzLCBidXQgaXMgaW5jbHVkZWQgZm9yIGJhY2t3YXJkCmNvbXBhdGFiaWxpdHkuKQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2FsbG93X2R1cGxpY2F0ZXMoIEk8Ym9vbGVhbj4gKT4KClRoaXMgY29udHJvbHMgd2hldGhlciBvciBub3QgZHVwbGljYXRlIGl0ZW1zIGFyZSBmaWx0ZXJlZCBvdXQgb3V0IHRoZQpmZWVkLiAgQnkgZGVmYXVsdCB0aGlzIGlzIEk8b24+LiAgTm90ZSB0aGF0IGR1cGxpY2F0ZXMgYXJlIGRldGVjdGVkIG9ubHkKYnkgdGhlaXIgVVJMLCBzbyBpZiB5b3UgY2FsbCB0aGlzOgoKICAgICAgICByc3NfaXRlbSgnaHR0cDovL2Zvby5pbnQvZG9uYXRlJywgIkdpdmUhIik7CiAgICAgICAgcnNzX2l0ZW0oJ2h0dHA6Ly9mb28uaW50L2RvbmF0ZScsICJXZSBuZWVkIG1vbmV5ISIpOwogICAgICAgIHJzc19zYXZlKCdiZWdnaW5nLnJzcycpOwoKLi4udGhlbiBvbmx5IHRoZSBmaXJzdCB3aWxsIGFwcGVhciBpbiB0aGUgZmVlZCwgc2luY2UgdGhlIHNlY29uZCBpdGVtCmhhcyBhIFVSTCB0aGF0IGlzIGFscmVhZHkgYmVpbmcgc2F2ZWQgaW4gdGhpcyBmZWVkLiAgKEhvd2V2ZXIsCkM8cnNzX2l0ZW1fY291bnQ+IGlzIHN0aWxsIDIsIGJlY2F1c2UgZmlsdGVyaW5nIG91dCBkdXBsaWNhdGVzIGlzCnNvbWV0aGluZyB0aGF0IG9ubHkgaGFwcGVucyBhcyB0aGUgZmVlZCBpcyBzYXZlZC4pCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfZG9jcyggSTx1cmw+ICk+CgpUaGlzIHNldHMgdGhlIHZhbHVlIG9mIHRoZSBub3QtZ2VuZXJhbGx5LXVzZWZ1bCBDPGRvYz4gUlNTIGVsZW1lbnQuClRoZSBkZWZhdWx0IHZhbHVlIGlzICIuL2Fib3V0X3Jzcy5odG1sIiBpZiBDPC1lICJhYm91dF9yc3MuaHRtbCI+IGlzCnRydWUsIG90aGVyd2lzZSAiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9hYm91dC5odG1sIi4KCj1pdGVtIHRoZSBhY2Nlc3NvcnMKQzw8CnJzc19pbWFnZV91cmwoSTx1cmw+KSwgcnNzX2ltYWdlX3dpZHRoKEk8bnVtYmVyPiksCnJzc19pbWFnZV9oZWlnaHQoSTxudW1iZXI+KSwKcnNzX2ltYWdlX3RpdGxlKEk8dGV4dD4pLCByc3NfaW1hZ2VfbGluayhJPHVybD4pLApyc3NfaW1hZ2VfZGVzY3JpcHRpb24oSTx0ZXh0PikKPj4KClRoZXNlIGFyZSBmb3IgbWFudWFsbHkgc2V0dGluZyB0aGUgdmFsdWVzIG9mIHRoaXMgZmVlZCdzIGltYWdlIGVsZW1lbnQncwpzdWJlbGVtZW50czoKCiAgPGltYWdlPgogICAgICAgICAgICAgIDx1cmw+IChyc3NfaW1hZ2VfdXJsKSAgICAgICAgIDwvdXJsPgogICAgICAgICAgICA8d2lkdGg+IChyc3NfaW1hZ2Vfd2lkdGgpICAgICAgIDwvd2lkdGg+CiAgICAgICAgICAgPGhlaWdodD4gKHJzc19pbWFnZV9oZWlnaHQpICAgICAgPC9oZWlnaHQ+CiAgICAgICAgICAgIDx0aXRsZT4gKHJzc19pbWFnZV90aXRsZSkgICAgICAgPC90aXRsZT4KICAgICAgICAgICAgIDxsaW5rPiAocnNzX2ltYWdlX2xpbmspICAgICAgICA8L2xpbms+CiAgICAgIDxkZXNjcmlwdGlvbj4gKHJzc19pbWFnZV9kZXNjcmlwdGlvbikgPC9kZXNjcmlwdGlvbj4KICA8L2ltYWdlPgoKWW91IHJhcmVseSBuZWVkIHRvIGNhbGwgYW55IG9mIHRoZXNlIEM8cnNzX2ltYWdlX0k8d2hhdGV2ZXI+PiBmdW5jdGlvbnMgLS0KdXN1YWxseSBqdXN0IGNhbGxpbmcgQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4gaXMgZW5vdWdoLgoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBARG9XICAgPSBxdyhTdW4gTW9uIFR1ZSBXZWQgVGh1IEZyaSBTYXQpOwpteSBATW9udGggPSBxdyhKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyk7CgpzdWIgX2RhdGVfcmZjODIyIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15IEB0aW1lbGlzdCA9IChAXyA9PSAwKSA/IGdtdGltZSA6IChAXyA9PSAxKSA/IGdtdGltZSgkX1swXSkgOiBAXzsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKCiAgcmV0dXJuIHNwcmludGYoCiAgICAgIiVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgR01UIiwKICAgICAgJERvV1skdGltZWxpc3RbNl1dLAogICAgICAgICAgJHRpbWVsaXN0WzNdLAogICAgICAgICAgICAgICAkTW9udGhbJHRpbWVsaXN0WzRdXSwKICAgICAgICAgICAgICAgICAgICAgICBAdGltZWxpc3RbNSwgMiwxLDBdLAogICk7Cn0KCnN1YiBfY2hlY2tfYWdlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIG15ICRhZ2U7CiAgaWYoJGZpbGVuYW1lIGFuZCAkbWF4YWdlIGFuZCAkbWF4YWdlIDwgKCRhZ2UgPSAtTSAkZmlsZW5hbWUpKSB7CiAgICBDYXJwOjpjYXJwKAogICAgICBzcHJpbnRmICIlcyB3YXJuaW5nIC0gJXMgaXMgZ2V0dGluZyBvbGQgLS0gaXQgaGFzbid0IGNoYW5nZWQgaW4gJTAuMWYgZGF5cyEiLAogICAgICAgIHJlZigkc2VsZikgfHwgJHNlbGYsCiAgICAgICAgJGZpbGVuYW1lLAogICAgICAgICRhZ2UsCiAgICApOwogIH0KICByZXR1cm4gMDsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCnN1YiBfdmFyaW91c19jb21tZW50cyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkeDsKICByZXR1cm4KICAgIGpvaW4gJycsCiAgICBtYXAgezsgJHggPSAkXzsgJHggPX4gcy8tLS9fXy9nOyAiPCEtLSAkeCAtLT5cbiI7IH0KICAgIEB7ICRzZWxmLT57J19jb21tZW50cyd9IHx8IFtdIH0KICA7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9tb2R2ZXJzaW9uX2NvbW1lbnQgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJHNlbGZjbGFzcyA9IHJlZigkc2VsZik7CiAgbXkgJHYgPSBldmFsIHsgJHNlbGZjbGFzcy0+VkVSU0lPTiB9IHx8ICRWRVJTSU9OOwogIHJldHVybiAiXG48IS0tIEdlbmVyYXRlZCB3aXRoIFBlcmwncyAkc2VsZmNsYXNzIHYkdiAtLT5cbiI7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9hY2Nlc3Nvcml6ZSB7ICAjIEEgc2ltcGxlLW1pbmRlZCBtZXRob2QtbWFrZXIKICBubyBzdHJpY3QgJ3JlZnMnOwogIGZvcmVhY2ggbXkgJGF0dHJuYW1lIChAXykgewogICAgbmV4dCBpZiAkYXR0cm5hbWUgPX4gbS86Oi87ICMgYSBoYWNrCiAgICAqe2NhbGxlcigpIC4gJzo6JyAuICRhdHRybmFtZX0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0OwogICAgICB1bmxlc3MoKEBfID09IDEgb3IgQF8gPT0gMikgYW5kIHJlZiAkX1swXSApIHsKICAgICAgICAkQ2FycDo6Q2FycExldmVsID0gMTsKICAgICAgICBDYXJwOjpjcm9haygKICAgICAgICAgIkFjY2Vzc29yIHVzYWdlOiBcJG9iai0+JGF0dHJuYW1lKCkgb3IgXCRvYmotPiRhdHRybmFtZShcJG5ld192YWx1ZSkiCiAgICAgICAgKTsKICAgICAgfQogICAgICAoQF8gPT0gMSkgPyAgJF9bMF0tPnskYXR0cm5hbWV9CiAgICAgICAgICAgICAgICA6ICgkX1swXS0+eyRhdHRybmFtZX0gPSAkX1sxXSk7CiAgICB9OwogIH0KICAjIFlhIGtub3csIHRoZXkgc2F5IGFjY2Vzc29yaWVzIG1ha2UgdGhlIGVuc2VtYmxlIQogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgeG1sZXNjIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRvdXQgPSBqb2luICcnLCBAXzsKICAkb3V0ID1+IHM8KFteXHgyMFx4MjFceDIzXHgyNFx4MjVceDI3LVx4M2JceDNkXHgzZi1ceDdlXSk+CiAgICAgICAgICAgPCRDb21tb25FbnRzeyQxfSB8fCAoJyYjJy4ob3JkKCQxKSkuJzsnKSA+c2VnOwogIHJldHVybiAkb3V0Owp9CgpzdWIgeG1sZWxlbSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBteSAkZ2kgICA9IHNoaWZ0OwogIHJldHVybiAiPCRnaT4iIC4gJHNlbGYtPnhtbGVzYyhAXykgLiAiPC8kZ2k+IjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgaHRtbDJ0ZXh0IHsKCiAgIyBBIHJ1ZGltZW50YXJ5IEhUTUwgdG9rZW5pemVyLCBhZGFwdGVkIGFuZCBzaW1wbGlmaWVkCiAgIyBmcm9tIEdpc2xlIEFhcydzIEhUTUw6OlBhcnNlciB2Mi4yNS4uLgoKICBsb2NhbCAkXzsKICBteSgkc2VsZiwgQG91dCk7CiAgKCRzZWxmLCAkXykgPSBAXzsKCiAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRfOwogIHJldHVybiAkJF8gICBpZiByZWYoJF8pIGVxICdTQ0FMQVInOyAgIyBQYXNzIGEgc2NhbGFyIHJlZiB0byBieXBhc3MhCiAgcmV0dXJuICcnICAgIHVubGVzcyBsZW5ndGggICRfOwoKICBpZiggbS9eW1x4MDAtXHg3ZV0rJC9zIGFuZCAhIG0vWzw+Jl0vcykgewogICAgIyBNb3N0IGNvbW1vbiBjYXNlOiBhIHNpbXBsZSBzdHJpbmcgbmVlZGluZyBubyBIVE1MIHBhcnNpbmcuCiAgICAjIFNvIGp1c3QgY29tcGFjdCBhbmQgdHJpbSB3aGl0ZXNwYWNlLCBhbmQgbW92ZSBvbi4KICAgIHRyL1xuXHJcZlx0IC8gL3M7CiAgICBzLyAkLy9zOwogICAgcy9eIC8vczsKICAgIHJldHVybiAkXzsKICB9CiAgCiAgd2hpbGUoIGxlbmd0aCgkXykgKSB7CiAgICBpZiAoIHNAXihbXiY8XSspQEBzKSB7ICAjIEFueSBwbGFpbnRleHQKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogUGxhaW50ZXh0IHskMX1cbiI7CiAgICAgIHB1c2ggQG91dCwgJDE7CiAgICB9IGVsc2lmICggc0BeCiAgICAgICgKICAgICAgICAmXCMKICAgICAgICAoPzoKICAgICAgICAgICg/OiAjIGRlYwogICAgICAgICAgICAoWzAtOV17MSw3fSkKICAgICAgICAgICl8KD86ICMgb3IgaGV4CiAgICAgICAgICAgW3hYXShbMC05YS1mQS1GXXsxLDd9KQogICAgICAgICAgKQogICAgICAgICkKICAgICAgKQogICAgICBcYgogICAgICA7PwogICAgICBAQHN4CiAgICApIHsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTnVtZXJpYyBlbnQgeyQxfSIsCiAgICAgICAgIGRlZmluZWQoJDIpID8gIiAoZGVjICQyKSIgCiAgICAgICA6IGRlZmluZWQoJDMpID8gIiAoaGV4ICQzKSIgCiAgICAgICA6ICIgKHdlaXJkISkiLAogICAgICAgIlxuIjsKCiAgICAgIGlmKCAgICAgIGRlZmluZWQgJDMgYW5kIGV4aXN0cyAkV2luTGFtZUVudGl0aWVze2hleCgkMyl9ICkgewogICAgICAgICMgaXQncyBhIHdpbmxhbWUgZW50LCBpbiBoZXgKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICIgQ29ycmVjdGluZyB0aGF0IHRvICYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcIiYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTsiIDsKICAgICAgfSBlbHNpZiggZGVmaW5lZCAkMiBhbmQgZXhpc3RzICRXaW5MYW1lRW50aXRpZXN7MCArICQyfSApIHsKICAgICAgICAjIGl0J3MgYSB3aW5sYW1lIGVudCwgaW4gZGVjaW1hbAogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBDb3JyZWN0aW5nIHRoYXQgdG8gJiMkV2luTGFtZUVudGl0aWVzezAgKyAkMn07XG4iOwogICAgICAgIHB1c2ggQG91dCwgXCImIyRXaW5MYW1lRW50aXRpZXN7MCArICQyfTsiICA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgIyBpdCdzIGEgbm9ybWFsIGVudGl0eQogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBQYXNzaW5nIGl0IHRocnUgYXMgXCIkMTtcIlxuIjsKICAgICAgICBwdXNoIEBvdXQsIFwiJDE7IjsKICAgICAgfQogICAgICAKCiAgICB9IGVsc2lmICggc0BeJihbQS1aYS16XVtBLVphLXowLTldezAsMTB9KVxiKDs/KUBAcykgewoKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTmFtZWQgZW50aXR5IHskMX1cbiI7CiAgICAgIGlmKGV4aXN0cyAkRW50aXRpZXN7JDF9KSB7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3skMX07CiAgICAgIH0gZWxzaWYoZXhpc3RzICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH0pIHsKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICI6OjogVHJlYXRpbmcgYXMgaWYgaXQgd2VyZSAmIiwKICAgICAgICAgIHVjZmlyc3QobGMoJDEpKSwgIjtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgREVCVUcgPiA2IGFuZCBwcmludCAiOjo6IFVucmVzb2x2YWJsZSEgIFRyZWF0aW5nIGFzIHBsYWludGV4dFxuIjsKICAgICAgICBwdXNoIEBvdXQsICImJDEiIC4gKCQyIHx8ICcnKTsKICAgICAgfQoKCiAgICAjIFRoaW5ncyB3ZSBqdXN0IGlnbm9yZToKICAgIH0gZWxzaWYoIHNAXig8IVxzKi0tLio/LS1ccyo+KUBAcyApIHsgICMgIk5ldHNjYXBlIiBjb21tZW50cwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgY29tbWVudCB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BeKDxbIT9dW14+XSo+KUBAcyApIHsgIyBkb2N0eXBlLCBQSSwgb3IgYSB3ZWlyZCBjb21tZW50CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IERpcmVjdGl2ZS9QSSB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BePC8/KFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfSlccyovPz5AQCApIHsKICAgICAgIyBFbmQtdGFnLCBvciBhIHNpbXBsZSBzdGFydC10YWcKICAgICAgcHVzaCBAb3V0LCAnICcgaWYgJElzQmxvY2tNYXJrdXB7bGMgJDF9OwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgdGFnIHskMX0iLAogICAgICAgICRJc0Jsb2NrTWFya3Vwe2xjICQxfSA/ICIgK2JyZWFreSI6ICgpLCAiXG4iOwoKICAgIH0gZWxzaWYgKCAgICAjIGNvbXBsZXggc3RhcnQtdGFnCiAgICAgIHNACiAgICAgICBeCiAgICAgICAoCiAgICAgICAgPAogICAgICAgIChbYS16QS1aXVthLXpBLVowLTlcLlw6XF9cLV17MCw3Mn0pICAjIHRoZSBHLkkuCiAgICAgICAgKD86CiAgICAgICAgICBccysKICAgICAgICAgIFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfQogICAgICAgICAgKD86ICAjIEF0dHJpYnV0ZXMgY2FuIGJlIHZhbHVlbGVzcyEKICAgICAgICAgICAgXHMqCiAgICAgICAgICAgID0KICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICg/OiAgICAgICAgICAgICAjIEF0dHJpYnV0ZSB2YWx1ZS4uLgogICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgIlteIl0qIiAgICAgICAjICJmb28gYmFyIgogICAgICAgICAgICAgICl8KD86CiAgICAgICAgICAgICAgICAnW14nXSonICAgICAgICMgJ2ZvbyBiYXInCiAgICAgICAgICAgICAgKXwoPzoKICAgICAgICAgICAgICAgIFtePD5cblxyXHQgXXswLDkwfSAjIGZvb2JhcmJhegogICAgICAgICAgICAgICAgICAjIDkwIGlzIG15IHNhbmUgbGVuZ3RoLWxpbWl0IG9uIHVucXVvdGVkIGF0dHJ2YWx1ZXMKICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICk/CiAgICAgICAgKSogICAjIGFueSBudWJtZXIgb2YgYXR0cmlicwogICAgICAgIFxzKiAgIyBvcHRpb25hbCBlbmRpbmcgd2hpdGVzcGFjZQogICAgICAgIC8/ICAgIyBvcHRpb25hbCBlbXB0aW5lc3MgZmxhZwogICAgICAgID4KICAgICAgICkKICAgICAgIEBAeAogICAgKSB7CiAgICAgIHB1c2ggQG91dCwgJyAnIGlmICRJc0Jsb2NrTWFya3Vwe2xjICQyfTsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogQ29tcGxleCBzdGFydC10YWcgeyQyfSIsCiAgICAgICAgICAkSXNCbG9ja01hcmt1cHtsYyAkMn0gPyAiICticmVha3kiOiAoKSwgIlxuIjsKICAgICAgCiAgICAjIEdldHMgY2FsbGVkIG9ubHkgb24gYWJlcnJhbnQgaW5wdXQsIEkgdGhpbms6CiAgICB9IGVsc2lmKCBzQF4oLilAQHMgKSB7CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IExhc3QtcmVzb3J0IHNpbmdsZSBjaGFyYWN0ZXIgeyQxfVxuIjsKICAgICAgcHVzaCBAb3V0LCAkMTsKICAgIAogICAgfSBlbHNlIHsKICAgICAgZGllICJJTVBPU1NJQkxFIHskX31cbiAhISEgIjsgIyBzYW5pdHktY2hlY2sKICAgIH0KICB9CiAgCiAgZm9yZWFjaCBteSAkeCAoQG91dCkgewogICAgaWYoIHJlZiAkeCApIHsKICAgICAgJHggPSAkJHg7CiAgICB9IGVsc2UgeyAgIyBkbyBuZWNlc3NhcnkgZXNjYXBpbmcKICAgICAgJHggPX4gdHIvXG5cclxmXHQgLyAvczsgIyBzbWFzaCB3aGl0ZXNwYWNlCiAgICAgICR4ID0gJHNlbGYtPnhtbGVzYygkeCkgdW5sZXNzICR4ID1+IG0vXlthLXpBLVowLTlfJyIsXC4gXSokL3MKICAgICAgICMgRG9kZ2UgY2FsbGluZyBvbiB0aGUgbW9zdCBjb21tb24gY2FzZSwgaS5lLiwgdGV4dAogICAgICAgIyAgdGhhdCByZWFsbHkgZG9lc24ndCBuZWVkIGFueSBleGN1c2UgYXQgYWxsLgogICAgfQogIH0KCiAgcmV0dXJuIGpvaW4gJycsIEBvdXQ7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKJE1JTUVfVHlwZSA9ICdhcHBsaWNhdGlvbi9yc3MreG1sJzsKCiVXaW5MYW1lRW50aXRpZXMgPSAoCiBkbyB7OwogICBteSAkYyA9IDB4ODA7CiAgIG1hcCB7OyAkYysrID0+IChoZXgoJF8pIHx8IDB4MDA3ZSkgfQogICBxdygKMjBhYyAwMDAwIDIwMWEgMDE5MiAyMDFlIDIwMjYgMjAyMCAyMDIxIDAyYzYgMjAzMCAwMTYwIDIwMzkgMDE1MiAwMCAwMTdkIDAwMDAKMDAwMCAyMDE4IDIwMTkgMjAxYyAyMDFkIDIwMjIgMjAxMyAyMDE0IDAyZGMgMjEyMiAwMTYxIDIwM2EgMDE1MyAwMCAwMTdlIDAxNzgKKSMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICB8Cn0pOwoKX2luaXRfY29tbW9uX2VudHMoKTsKCnN1YiBfaW5pdF9jb21tb25fZW50cyB7CiAgJUNvbW1vbkVudHMgPSAoCiAgICAnJicgPT4gJyZhbXA7JywKICAgICc8JyA9PiAnJmx0OycsCiAgICAnPicgPT4gJyZndDsnLAogICAgJyInID0+ICcmcXVvdDsnLAogICAgKCBtYXAgezsgY2hyKCRfKSA9PiAiICIgfSAwIC4uIDMxICksCiAgICAoIG1hcCB7OyBjaHIoJF8pID0+ICImIyRXaW5MYW1lRW50aXRpZXN7JF99OyIgfSBrZXlzICVXaW5MYW1lRW50aXRpZXMgKSwKICApOwogIHJldHVybjsKfQoKJUVudGl0aWVzID0gKAogIyBIVE1MIGVudGl0aWVzIGdvdHRlbiBmcm9tIHRoZSBIVE1MIERURHMKIAogJ0FhY3V0ZScgPT4gJyYjeGMxOycsICAgICdhYWN1dGUnID0+ICcmI3hlMTsnLCAgICdBY2lyYycgPT4gJyYjeGMyOycsCiAnYWNpcmMnID0+ICcmI3hlMjsnLCAgICAgJ2FjdXRlJyA9PiAnJiN4YjQ7JywgICAgJ0FFbGlnJyA9PiAnJiN4YzY7JywKICdhZWxpZycgPT4gJyYjeGU2OycsICAgICAnQWdyYXZlJyA9PiAnJiN4YzA7JywgICAnYWdyYXZlJyA9PiAnJiN4ZTA7JywKICdhbGVmc3ltJyA9PiAnJiN4MjEzNTsnLCAnQWxwaGEnID0+ICcmI3gzOTE7JywgICAnYWxwaGEnID0+ICcmI3gzYjE7JywKICdhbXAnID0+ICcmI3gyNjsnLCAgICAgICAnYW5kJyA9PiAnJiN4MjIyNzsnLCAgICAnYW5nJyA9PiAnJiN4MjIyMDsnLAogJ2Fwb3MnID0+ICcmI3gyNzsnLCAgICAgICdBcmluZycgPT4gJyYjeGM1OycsICAgICdhcmluZycgPT4gJyYjeGU1OycsCiAnYXN5bXAnID0+ICcmI3gyMjQ4OycsICAgJ0F0aWxkZScgPT4gJyYjeGMzOycsICAgJ2F0aWxkZScgPT4gJyYjeGUzOycsCiAnQXVtbCcgPT4gJyYjeGM0OycsICAgICAgJ2F1bWwnID0+ICcmI3hlNDsnLCAgICAgJ2JkcXVvJyA9PiAnJiN4MjAxZTsnLAogJ0JldGEnID0+ICcmI3gzOTI7JywgICAgICdiZXRhJyA9PiAnJiN4M2IyOycsICAgICdicnZiYXInID0+ICcmI3hhNjsnLAogJ2J1bGwnID0+ICcmI3gyMDIyOycsICAgICdjYXAnID0+ICcmI3gyMjI5OycsICAgICdDY2VkaWwnID0+ICcmI3hjNzsnLAogJ2NjZWRpbCcgPT4gJyYjeGU3OycsICAgICdjZWRpbCcgPT4gJyYjeGI4OycsICAgICdjZW50JyA9PiAnJiN4YTI7JywKICdDaGknID0+ICcmI3gzYTc7JywgICAgICAnY2hpJyA9PiAnJiN4M2M3OycsICAgICAnY2lyYycgPT4gJyYjeDJjNjsnLAogJ2NsdWJzJyA9PiAnJiN4MjY2MzsnLCAgICdjb25nJyA9PiAnJiN4MjI0NTsnLCAgICdjb3B5JyA9PiAnJiN4YTk7JywKICdjcmFycicgPT4gJyYjeDIxYjU7JywgICAnY3VwJyA9PiAnJiN4MjIyYTsnLCAgICAnY3VycmVuJyA9PiAnJiN4YTQ7JywKICdkYWdnZXInID0+ICcmI3gyMDIwOycsICAnRGFnZ2VyJyA9PiAnJiN4MjAyMTsnLCAnZGFycicgPT4gJyYjeDIxOTM7JywKICdkQXJyJyA9PiAnJiN4MjFkMzsnLCAgICAnZGVnJyA9PiAnJiN4YjA7JywgICAgICAnRGVsdGEnID0+ICcmI3gzOTQ7JywKICdkZWx0YScgPT4gJyYjeDNiNDsnLCAgICAnZGlhbXMnID0+ICcmI3gyNjY2OycsICAnZGl2aWRlJyA9PiAnJiN4Zjc7JywKICdFYWN1dGUnID0+ICcmI3hjOTsnLCAgICAnZWFjdXRlJyA9PiAnJiN4ZTk7JywgICAnRWNpcmMnID0+ICcmI3hjYTsnLAogJ2VjaXJjJyA9PiAnJiN4ZWE7JywgICAgICdFZ3JhdmUnID0+ICcmI3hjODsnLCAgICdlZ3JhdmUnID0+ICcmI3hlODsnLAogJ2VtcHR5JyA9PiAnJiN4MjIwNTsnLCAgICdlbXNwJyA9PiAnJiN4MjAwMzsnLCAgICdlbnNwJyA9PiAnJiN4MjAwMjsnLAogJ0Vwc2lsb24nID0+ICcmI3gzOTU7JywgICdlcHNpbG9uJyA9PiAnJiN4M2I1OycsICdlcXVpdicgPT4gJyYjeDIyNjE7JywKICdFdGEnID0+ICcmI3gzOTc7JywgICAgICAnZXRhJyA9PiAnJiN4M2I3OycsICAgICAnRVRIJyA9PiAnJiN4ZDA7JywKICdldGgnID0+ICcmI3hmMDsnLCAgICAgICAnRXVtbCcgPT4gJyYjeGNiOycsICAgICAnZXVtbCcgPT4gJyYjeGViOycsCiAnZXVybycgPT4gJyYjeDIwYWM7JywgICAgJ2V4aXN0JyA9PiAnJiN4MjIwMzsnLCAgJ2Zub2YnID0+ICcmI3gxOTI7JywKICdmb3JhbGwnID0+ICcmI3gyMjAwOycsICAnZnJhYzEyJyA9PiAnJiN4YmQ7JywgICAnZnJhYzE0JyA9PiAnJiN4YmM7JywKICdmcmFjMzQnID0+ICcmI3hiZTsnLCAgICAnZnJhc2wnID0+ICcmI3gyMDQ0OycsICAnR2FtbWEnID0+ICcmI3gzOTM7JywKICdnYW1tYScgPT4gJyYjeDNiMzsnLCAgICAnZ2UnID0+ICcmI3gyMjY1OycsICAgICAnZ3QnID0+ICcmI3gzZTsnLAogJ2hhcnInID0+ICcmI3gyMTk0OycsICAgICdoQXJyJyA9PiAnJiN4MjFkNDsnLCAgICdoZWFydHMnID0+ICcmI3gyNjY1OycsCiAnaGVsbGlwJyA9PiAnJiN4MjAyNjsnLCAgJ0lhY3V0ZScgPT4gJyYjeGNkOycsICAgJ2lhY3V0ZScgPT4gJyYjeGVkOycsCiAnSWNpcmMnID0+ICcmI3hjZTsnLCAgICAgJ2ljaXJjJyA9PiAnJiN4ZWU7JywgICAgJ2lleGNsJyA9PiAnJiN4YTE7JywKICdJZ3JhdmUnID0+ICcmI3hjYzsnLCAgICAnaWdyYXZlJyA9PiAnJiN4ZWM7JywgICAnaW1hZ2UnID0+ICcmI3gyMTExOycsCiAnaW5maW4nID0+ICcmI3gyMjFlOycsICAgJ2ludCcgPT4gJyYjeDIyMmI7JywgICAgJ0lvdGEnID0+ICcmI3gzOTk7JywKICdpb3RhJyA9PiAnJiN4M2I5OycsICAgICAnaXF1ZXN0JyA9PiAnJiN4YmY7JywgICAnaXNpbicgPT4gJyYjeDIyMDg7JywKICdJdW1sJyA9PiAnJiN4Y2Y7JywgICAgICAnaXVtbCcgPT4gJyYjeGVmOycsICAgICAnS2FwcGEnID0+ICcmI3gzOWE7JywKICdrYXBwYScgPT4gJyYjeDNiYTsnLCAgICAnTGFtYmRhJyA9PiAnJiN4MzliOycsICAnbGFtYmRhJyA9PiAnJiN4M2JiOycsCiAnbGFuZycgPT4gJyYjeDIzMjk7JywgICAgJ2xhcXVvJyA9PiAnJiN4YWI7JywgICAgJ2xhcnInID0+ICcmI3gyMTkwOycsCiAnbEFycicgPT4gJyYjeDIxZDA7JywgICAgJ2xjZWlsJyA9PiAnJiN4MjMwODsnLCAgJ2xkcXVvJyA9PiAnJiN4MjAxYzsnLAogJ2xlJyA9PiAnJiN4MjI2NDsnLCAgICAgICdsZmxvb3InID0+ICcmI3gyMzBhOycsICdsb3dhc3QnID0+ICcmI3gyMjE3OycsCiAnbG96JyA9PiAnJiN4MjVjYTsnLCAgICAgJ2xybScgPT4gJyYjeDIwMGU7JywgICAgJ2xzYXF1bycgPT4gJyYjeDIwMzk7JywKICdsc3F1bycgPT4gJyYjeDIwMTg7JywgICAnbHQnID0+ICcmI3gzYzsnLCAgICAgICAnbWFjcicgPT4gJyYjeGFmOycsCiAnbWRhc2gnID0+ICcmI3gyMDE0OycsICAgJ21pY3JvJyA9PiAnJiN4YjU7JywgICAgJ21pZGRvdCcgPT4gJyYjeGI3OycsCiAnbWludXMnID0+ICcmI3gyMjEyOycsICAgJ011JyA9PiAnJiN4MzljOycsICAgICAgJ211JyA9PiAnJiN4M2JjOycsCiAnbmFibGEnID0+ICcmI3gyMjA3OycsICAgJ25ic3AnID0+ICcmI3hhMDsnLCAgICAgJ25kYXNoJyA9PiAnJiN4MjAxMzsnLAogJ25lJyA9PiAnJiN4MjI2MDsnLCAgICAgICduaScgPT4gJyYjeDIyMGI7JywgICAgICdub3QnID0+ICcmI3hhYzsnLAogJ25vdGluJyA9PiAnJiN4MjIwOTsnLCAgICduc3ViJyA9PiAnJiN4MjI4NDsnLCAgICdOdGlsZGUnID0+ICcmI3hkMTsnLAogJ250aWxkZScgPT4gJyYjeGYxOycsICAgICdOdScgPT4gJyYjeDM5ZDsnLCAgICAgICdudScgPT4gJyYjeDNiZDsnLAogJ09hY3V0ZScgPT4gJyYjeGQzOycsICAgICdvYWN1dGUnID0+ICcmI3hmMzsnLCAgICdPY2lyYycgPT4gJyYjeGQ0OycsCiAnb2NpcmMnID0+ICcmI3hmNDsnLCAgICAgJ09FbGlnJyA9PiAnJiN4MTUyOycsICAgJ29lbGlnJyA9PiAnJiN4MTUzOycsCiAnT2dyYXZlJyA9PiAnJiN4ZDI7JywgICAgJ29ncmF2ZScgPT4gJyYjeGYyOycsICAgJ29saW5lJyA9PiAnJiN4MjAzZTsnLAogJ09tZWdhJyA9PiAnJiN4M2E5OycsICAgICdvbWVnYScgPT4gJyYjeDNjOTsnLCAgICdPbWljcm9uJyA9PiAnJiN4MzlmOycsCiAnb21pY3JvbicgPT4gJyYjeDNiZjsnLCAgJ29wbHVzJyA9PiAnJiN4MjI5NTsnLCAgJ29yJyA9PiAnJiN4MjIyODsnLAogJ29yZGYnID0+ICcmI3hhYTsnLCAgICAgICdvcmRtJyA9PiAnJiN4YmE7JywgICAgICdPc2xhc2gnID0+ICcmI3hkODsnLAogJ29zbGFzaCcgPT4gJyYjeGY4OycsICAgICdPdGlsZGUnID0+ICcmI3hkNTsnLCAgICdvdGlsZGUnID0+ICcmI3hmNTsnLAogJ290aW1lcycgPT4gJyYjeDIyOTc7JywgICdPdW1sJyA9PiAnJiN4ZDY7JywgICAgICdvdW1sJyA9PiAnJiN4ZjY7JywKICdwYXJhJyA9PiAnJiN4YjY7JywgICAgICAncGFydCcgPT4gJyYjeDIyMDI7JywgICAncGVybWlsJyA9PiAnJiN4MjAzMDsnLAogJ3BlcnAnID0+ICcmI3gyMmE1OycsICAgICdQaGknID0+ICcmI3gzYTY7JywgICAgICdwaGknID0+ICcmI3gzYzY7JywKICdQaScgPT4gJyYjeDNhMDsnLCAgICAgICAncGknID0+ICcmI3gzYzA7JywgICAgICAncGl2JyA9PiAnJiN4M2Q2OycsCiAncGx1c21uJyA9PiAnJiN4YjE7JywgICAgJ3BvdW5kJyA9PiAnJiN4YTM7JywgICAgJ3ByaW1lJyA9PiAnJiN4MjAzMjsnLAogJ1ByaW1lJyA9PiAnJiN4MjAzMzsnLCAgICdwcm9kJyA9PiAnJiN4MjIwZjsnLCAgICdwcm9wJyA9PiAnJiN4MjIxZDsnLAogJ1BzaScgPT4gJyYjeDNhODsnLCAgICAgICdwc2knID0+ICcmI3gzYzg7JywgICAgICdxdW90JyA9PiAnJiN4MjI7JywKICdyYWRpYycgPT4gJyYjeDIyMWE7JywgICAncmFuZycgPT4gJyYjeDIzMmE7JywgICAncmFxdW8nID0+ICcmI3hiYjsnLAogJ3JhcnInID0+ICcmI3gyMTkyOycsICAgICdyQXJyJyA9PiAnJiN4MjFkMjsnLCAgICdyY2VpbCcgPT4gJyYjeDIzMDk7JywKICdyZHF1bycgPT4gJyYjeDIwMWQ7JywgICAncmVhbCcgPT4gJyYjeDIxMWM7JywgICAncmVnJyA9PiAnJiN4YWU7JywKICdyZmxvb3InID0+ICcmI3gyMzBiOycsICAnUmhvJyA9PiAnJiN4M2ExOycsICAgICAncmhvJyA9PiAnJiN4M2MxOycsCiAncmxtJyA9PiAnJiN4MjAwZjsnLCAgICAgJ3JzYXF1bycgPT4gJyYjeDIwM2E7JywgJ3JzcXVvJyA9PiAnJiN4MjAxOTsnLAogJ3NicXVvJyA9PiAnJiN4MjAxYTsnLCAgICdTY2Fyb24nID0+ICcmI3gxNjA7JywgICdzY2Fyb24nID0+ICcmI3gxNjE7JywKICdzZG90JyA9PiAnJiN4MjJjNTsnLCAgICAnc2VjdCcgPT4gJyYjeGE3OycsICAgICAnc2h5JyA9PiAnJiN4YWQ7JywKICdTaWdtYScgPT4gJyYjeDNhMzsnLCAgICAnc2lnbWEnID0+ICcmI3gzYzM7JywgICAnc2lnbWFmJyA9PiAnJiN4M2MyOycsCiAnc2ltJyA9PiAnJiN4MjIzYzsnLCAgICAgJ3NwYWRlcycgPT4gJyYjeDI2NjA7JywgJ3N1YicgPT4gJyYjeDIyODI7JywKICdzdWJlJyA9PiAnJiN4MjI4NjsnLCAgICAnc3VtJyA9PiAnJiN4MjIxMTsnLCAgICAnc3VwJyA9PiAnJiN4MjI4MzsnLAogJ3N1cDEnID0+ICcmI3hiOTsnLCAgICAgICdzdXAyJyA9PiAnJiN4YjI7JywgICAgICdzdXAzJyA9PiAnJiN4YjM7JywKICdzdXBlJyA9PiAnJiN4MjI4NzsnLCAgICAnc3psaWcnID0+ICcmI3hkZjsnLCAgICAnVGF1JyA9PiAnJiN4M2E0OycsCiAndGF1JyA9PiAnJiN4M2M0OycsICAgICAgJ3RoZXJlNCcgPT4gJyYjeDIyMzQ7JywgJ1RoZXRhJyA9PiAnJiN4Mzk4OycsCiAndGhldGEnID0+ICcmI3gzYjg7JywgICAgJ3RoZXRhc3ltJyA9PiAnJiN4M2QxOycsJ3RoaW5zcCcgPT4gJyYjeDIwMDk7JywKICdUSE9STicgPT4gJyYjeGRlOycsICAgICAndGhvcm4nID0+ICcmI3hmZTsnLCAgICAndGlsZGUnID0+ICcmI3gyZGM7JywKICd0aW1lcycgPT4gJyYjeGQ3OycsICAgICAndHJhZGUnID0+ICcmI3gyMTIyOycsICAnVWFjdXRlJyA9PiAnJiN4ZGE7JywKICd1YWN1dGUnID0+ICcmI3hmYTsnLCAgICAndWFycicgPT4gJyYjeDIxOTE7JywgICAndUFycicgPT4gJyYjeDIxZDE7JywKICdVY2lyYycgPT4gJyYjeGRiOycsICAgICAndWNpcmMnID0+ICcmI3hmYjsnLCAgICAnVWdyYXZlJyA9PiAnJiN4ZDk7JywKICd1Z3JhdmUnID0+ICcmI3hmOTsnLCAgICAndW1sJyA9PiAnJiN4YTg7JywgICAgICAndXBzaWgnID0+ICcmI3gzZDI7JywKICdVcHNpbG9uJyA9PiAnJiN4M2E1OycsICAndXBzaWxvbicgPT4gJyYjeDNjNTsnLCAnVXVtbCcgPT4gJyYjeGRjOycsCiAndXVtbCcgPT4gJyYjeGZjOycsICAgICAgJ3dlaWVycCcgPT4gJyYjeDIxMTg7JywgJ1hpJyA9PiAnJiN4MzllOycsCiAneGknID0+ICcmI3gzYmU7JywgICAgICAgJ1lhY3V0ZScgPT4gJyYjeGRkOycsICAgJ3lhY3V0ZScgPT4gJyYjeGZkOycsCiAneWVuJyA9PiAnJiN4YTU7JywgICAgICAgJ3l1bWwnID0+ICcmI3hmZjsnLCAgICAgJ1l1bWwnID0+ICcmI3gxNzg7JywKICdaZXRhJyA9PiAnJiN4Mzk2OycsICAgICAnemV0YScgPT4gJyYjeDNiNjsnLCAgICAnendqJyA9PiAnJiN4MjAwZDsnLAogJ3p3bmonID0+ICcmI3gyMDBjOycsCik7Cgpmb3JlYWNoIG15ICR0YWduYW1lICggcXd7CiBicgogYWRkcmVzcyBhcHBsZXQgYXJlYSBiYXNlIGJnc291bmQgYmxvY2txdW90ZSBib2R5IGJ1dHRvbiBjYXB0aW9uIGNlbnRlciBjb2wKIGNvbGdyb3VwIGRkIGRlbCBkaXIgZGl2IGRsIGR0IGZpZWxkc2V0IGZvcm0gZnJhbWUgZnJhbWVzZXQgaDEgaDIgaDMgaDQgaDUKIGg2IGhlYWQgaHIgaHRtbCBpZnJhbWUgaWxheWVyIGlucHV0IGlucyBpc2luZGV4IGxhYmVsIGxheWVyIGxlZ2VuZCBsaSBsaW5rCiBsaXN0aW5nIG1hcCBtZW51IG1ldGEgbXVsdGljb2wgbm9mcmFtZXMgbm9sYXllciBub3NjcmlwdCBvYmplY3Qgb2wKIG9wdGdyb3VwIG9wdGlvbiBwIHBhcmFtIHBsYWludGV4dCBwcmUgc2NyaXB0IHNlbGVjdCBzdHlsZSB0YWJsZSB0Ym9keSB0ZAogdGV4dGFyZWEgdGZvb3QgdGggdGhlYWQgdGl0bGUgdHIgdWwgeG1wCn0pIHsgJElzQmxvY2tNYXJrdXB7JHRhZ25hbWV9ID0gMSB1bmxlc3MgZXhpc3RzICRJc0Jsb2NrTWFya3VweyR0YWduYW1lfSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyBOb3cgdGhlIGZ1bmN0aW9uIGdlbmVyYXRvcnM6CkBFWFBPUlQgPSAoICdnZXRfdXJsJyApOwoKJEVYUE9SVF9UQUdTeydmdW5jdGlvbnMnfSA9IFxARVhQT1JUOyAgIyBqdXN0IGZvciBteSBvd24gYmFja3dhcmQgY29tcGF0Cgpmb3JlYWNoIG15ICRtZXRob2QgKAogIGRvIHsKICAgIG5vIHN0cmljdCAncmVmcyc7CiAgICBteSAldG9faGlkZTsKICAgIEB0b19oaWRle0BIaWRpZXN9ID0gKCk7CiAgICBzb3J0CiAgICAgIGdyZXAgIWV4aXN0cyAkdG9faGlkZXskX30gJiYgIW0vXnJzc18vcwogICAgICAgICYmIG0vXlthLXpdW19BLVphLXowLTldKyQvcyAmJiBkZWZpbmVkICZ7IlhNTDo6UlNTOjpTaW1wbGVHZW46OiRfIn0sCiAgICAgICAga2V5cyAlWE1MOjpSU1M6OlNpbXBsZUdlbjo6CiAgfQopIHsKICBteSAkZnVuY3Rpb24gPSAicnNzXyRtZXRob2QiOwogIERFQlVHID4gMjAgYW5kIHByaW50ICIkbWV0aG9kID0+ICRmdW5jdGlvblxuIjsKICBwdXNoIEBFWFBPUlQsICRmdW5jdGlvbjsKICBubyBzdHJpY3QgJ3JlZnMnOwogIHVubGVzcyggZGVmaW5lZCAmeyRmdW5jdGlvbn0gKSB7CiAgICBERUJVRyA+IDIwIGFuZCBwcmludCAiIERlZmluaW5nICRmdW5jdGlvbiA9PiAkZnVuY3Rpb25cbiI7CiAgICAqeyRmdW5jdGlvbn0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0ICdyZWZzJzsKICAgICAgdW5zaGlmdCBAXywgKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldyk7CiAgICAgIGdvdG8gJnsKICAgICAgICAkX1swXS0+Y2FuKCRtZXRob2QpCiAgICAgICAgfHwgZGllICJXaGVyZSdzICRtZXRob2QgZm9yICRfWzBdPyEiCiAgICAgICAgICAjIGluc2FuZSBlcnJvciwgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHNvbWVib2R5CiAgICAgICAgICAjIGdvZXMgdW5kZWZpbmluZyBleGlzdGluZyBtZXRob2RzIQogICAgICB9OwogICAgfTsKICB9Cn0KCnN1YiByc3NfbmV3IHsgJFJTU19vYmogPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoQF8pIH0KREVCVUcgPiAyMCBhbmQgcHJpbnQgIkRvbmUgY29tcGlsaW5nICIsIF9fUEFDS0FHRV9fLCAiLlxuIjsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxOwpfX0VORF9fCgo9YmFjawoKPWhlYWQxIFJTUyBWRVJTSU9OCgpSU1MgZmVlZHMgZW1pdHRlZCBieSB0aGlzIG1vZHVsZSBhcmUgYmFzaWNhbGx5IGFjY29yZGluZyB0byB2MC45MiBSU1MsCndpdGggYSB2ZXJ5IGZldyBleHRlbnNpb25zIGZyb20gdjIuMCBSU1MuICBUaGV5IGFyZSBub3QgUkRGIGZpbGVzLgoKPWhlYWQxIFNFRSBBTFNPCgpMPFhNTDo6UlNTPgoKTDxodHRwOi8vbXkubmV0c2NhcGUuY29tL3B1Ymxpc2gvZm9ybWF0cy9yc3MtMC45MS5kdGQ+CgpMPGh0dHA6Ly9ibG9ncy5sYXcuaGFydmFyZC5lZHUvdGVjaC9yc3M+CgpMPGh0dHA6Ly9kaXJlY3RvcnkuZ29vZ2xlLmNvbS9Ub3AvUmVmZXJlbmNlL0xpYnJhcmllcy9MaWJyYXJ5X2FuZF9JbmZvcm1hdGlvbl9TY2llbmNlL1RlY2huaWNhbF9TZXJ2aWNlcy9DYXRhbG9ndWluZy9NZXRhZGF0YS9SREYvQXBwbGljYXRpb25zL1JTUy9TcGVjaWZpY2F0aW9ucy8+CgpMPGh0dHA6Ly9mZWVkdmFsaWRhdG9yLm9yZy8+CgpZb3UgbWlnaHQgYWxzbyBsaWtlIG15IGJvb2sgSTxQZXJsIGFuZCBMV1A+LCB3aGljaCBkaXNjdXNzZXMgdGhlIG1hbnkKc2NyZWVuLXNjcmFwaW5nIHRlY2huaXF1ZXMgdGhhdCB5b3Ugd291bGQgdXNlIGZvciBleHRyYWN0aW5nIGRhdGEgZnJvbQpIVE1MIHRvIG1ha2UgaW50byBSU1MgZmVlZHM6Cgo9b3ZlcgoKPWl0ZW0gTDxodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvcGVybGx3cC8+Cgo9aXRlbSBMPGh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvPgoKPWl0ZW0gTDxodHRwOi8vd3d3LmFtYXpvbi5jby51ay9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvdD4KCj1pdGVtIEw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vZC9zY3JhcGVycz4gLS0gZXhhbXBsZXMgb2YgUGVybApwcm9ncmFtcyB0aGF0IHByb2R1Y2UgUlNTJ3MgKHdoaWNoIGFyZSB2aXNpYmxlIGF0Ckw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vcnNzLz4gKQoKPWJhY2sKCgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgRElTQ0xBSU1FUlMKCkNvcHlyaWdodCAoYykgMjAwMyw0IFNlYW4gTS4gQnVya2UuICBBbGwgcmlnaHRzIHJlc2VydmVkLgoKVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCgpUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CndpdGhvdXQgYW55IHdhcnJhbnR5OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKbWVyY2hhbnRhYmlsaXR5IG9yIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgoKUG9ydGlvbnMgb2YgdGhlIGRhdGEgdGFibGVzIGluIHRoaXMgbW9kdWxlIGFyZSBkZXJpdmVkIGZyb20gdGhlCmVudGl0eSBkZWNsYXJhdGlvbnMgaW4gdGhlIFczQyBYSFRNTCBzcGVjaWZpY2F0aW9uLgoKQ3VycmVudGx5IChKYW51YXJ5IDIwMDQpLCB0aGF0J3MgdGhlc2UgdGhyZWU6CgogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1sYXQxLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zcGVjaWFsLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zeW1ib2wuZW50CgpQb3J0aW9ucyBvZiB0aGUgY29kZSBpbiB0aGlzIG1vZHVsZSB3ZXJlIGFkYXB0ZWQgZnJvbSBwYXJ0cyBvZgpHaXNsZSBBYXMncyBMPExXUDo6U2ltcGxlPiBhbmQgdGhlIG9sZCAodjIueCkgdmVyc2lvbiBvZiBoaXMKTDxIVE1MOjpQYXJzZXI+LgoKPWhlYWQxIEFVVEhPUgoKU2VhbiBNLiBCdXJrZSBDPHNidXJrZUBjcGFuLm9yZz4KCj1jdXQKCiogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKgoKT24gQmFiYmFnZSdzIERpc2Vhc2U6CgpDaGFybGVzIEJhYmJhZ2UsIGFzIChuZWNlc3NhcmlseSkgdGhlIGZpcnN0IHBlcnNvbiB0byB3b3JrIHdpdGggbWFjaGluZXMKdGhhdCBjYW4gYXR0YWNrIHByb2JsZW1zIGF0IGFyYml0cmFyeSBsZXZlbHMgb2YgYWJzdHJhY3Rpb24sIGZlbGwgaW50byBhCnRyYXAgZmFtaWxpYXIgdG8gdG9vbHNtaXRocyBzaW5jZSwgYXMgZGVzY3JpYmVkIGhlcmUgYnkgdGhlIEVuZ2xpc2gKZXRoaWNpc3QsIExvcmQgTW91bHRvbjoKCiJPbmUgb2YgdGhlIHNhZCBtZW1vcmllcyBvZiBteSBsaWZlIGlzIGEgdmlzaXQgdG8gdGhlIGNlbGVicmF0ZWQKbWF0aGVtYXRpY2lhbiBhbmQgaW52ZW50b3IsIE1yIEJhYmJhZ2UuIEhlIHdhcyBmYXIgYWR2YW5jZWQgaW4gYWdlLCBidXQKaGlzIG1pbmQgd2FzIHN0aWxsIGFzIHZpZ29yb3VzIGFzIGV2ZXIuIEhlIHRvb2sgbWUgdGhyb3VnaCBoaXMKd29yay1yb29tcy4gSW4gdGhlIGZpcnN0IHJvb20gSSBzYXcgcGFydHMgb2YgdGhlIG9yaWdpbmFsIENhbGN1bGF0aW5nCk1hY2hpbmUsIHdoaWNoIGhhZCBiZWVuIHNob3duIGluIGFuIGluY29tcGxldGUgc3RhdGUgbWFueSB5ZWFycyBiZWZvcmUKYW5kIGhhZCBldmVuIGJlZW4gcHV0IHRvIHNvbWUgdXNlLiBJIGFza2VkIGhpbSBhYm91dCBpdHMgcHJlc2VudCBmb3JtLgonSSBoYXZlIG5vdCBmaW5pc2hlZCBpdCBiZWNhdXNlIGluIHdvcmtpbmcgYXQgaXQgSSBjYW1lIG9uIHRoZSBpZGVhIG9mCm15IEFuYWx5dGljYWwgTWFjaGluZSwgd2hpY2ggd291bGQgZG8gYWxsIHRoYXQgaXQgd2FzIGNhcGFibGUgb2YgZG9pbmcKYW5kIG11Y2ggbW9yZS4gSW5kZWVkLCB0aGUgaWRlYSB3YXMgc28gbXVjaCBzaW1wbGVyIHRoYXQgaXQgd291bGQgaGF2ZQp0YWtlbiBtb3JlIHdvcmsgdG8gY29tcGxldGUgdGhlIENhbGN1bGF0aW5nIE1hY2hpbmUgdGhhbiB0byBkZXNpZ24gYW5kCmNvbnN0cnVjdCB0aGUgb3RoZXIgaW4gaXRzIGVudGlyZXR5LCBzbyBJIHR1cm5lZCBteSBhdHRlbnRpb24gdG8gdGhlCkFuYWx5dGljYWwgTWFjaGluZS4nIgoKIkFmdGVyIGEgZmV3IG1pbnV0ZXMnIHRhbGssIHdlIHdlbnQgaW50byB0aGUgbmV4dCB3b3JrLXJvb20sIHdoZXJlIGhlCnNob3dlZCBhbmQgZXhwbGFpbmVkIHRvIG1lIHRoZSB3b3JraW5nIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgQW5hbHl0aWNhbApNYWNoaW5lLiBJIGFza2VkIGlmIEkgY291bGQgc2VlIGl0LiAnSSBoYXZlIG5ldmVyIGNvbXBsZXRlZCBpdCwnIGhlCnNhaWQsICdiZWNhdXNlIEkgaGl0IHVwb24gYW4gaWRlYSBvZiBkb2luZyB0aGUgc2FtZSB0aGluZyBieSBhIGRpZmZlcmVudAphbmQgZmFyIG1vcmUgZWZmZWN0aXZlIG1ldGhvZCwgYW5kIHRoaXMgcmVuZGVyZWQgaXQgdXNlbGVzcyB0byBwcm9jZWVkCm9uIHRoZSBvbGQgbGluZXMuJyBUaGVuIHdlIHdlbnQgaW50byB0aGUgdGhpcmQgcm9vbS4gVGhlcmUgbGF5IHNjYXR0ZXJlZApiaXRzIG9mIG1lY2hhbmlzbSwgYnV0IEkgc2F3IG5vIHRyYWNlIG9mIGFueSB3b3JraW5nIG1hY2hpbmUuIFZlcnkKY2F1dGlvdXNseSBJIGFwcHJvYWNoZWQgdGhlIHN1YmplY3QsIGFuZCByZWNlaXZlZCB0aGUgZHJlYWRlZCBhbnN3ZXIsCidJdCBpcyBub3QgY29uc3RydWN0ZWQgeWV0LCBidXQgSSBhbSB3b3JraW5nIG9uIGl0LCBhbmQgaXQgd2lsbCB0YWtlCmxlc3MgdGltZSB0byBjb25zdHJ1Y3QgaXQgYWx0b2dldGhlciB0aGFuIGl0IHdvdWxkIGhhdmUgdG9rZW4gdG8KY29tcGxldGUgdGhlIEFuYWx5dGljYWwgTWFjaGluZSBmcm9tIHRoZSBzdGFnZSBpbiB3aGljaCBJIGxlZnQgaXQuJyBJCnRvb2sgbGVhdmUgb2YgdGhlIG9sZCBtYW4gd2l0aCBhIGhlYXZ5IGhlYXJ0LiIKCiJXaGVuIGhlIGRpZWQgYSBmZXcgeWVhcnMgbGF0ZXIsIG5vdCBvbmx5IGhhZCBoZSBjb25zdHJ1Y3RlZCBubyBtYWNoaW5lLApidXQgdGhlIHZlcmRpY3Qgb2YgYSBqdXJ5IG9mIGtpbmQgYW5kIHN5bXBhdGhldGljIHNjaWVudGlmaWMgbWVuIHdobwp3ZXJlIGRlcHV0ZWQgdG8gcHJvbm91bmNlIHVwb24gd2hhdCBoZSBoYWQgbGVmdCBiZWhpbmQgaGltLCBlaXRoZXIgaW4KcGFwZXJzIG9yIGluIG1lY2hhbmlzbSwgd2FzIHRoYXQgZXZlcnl0aGluZyB3YXMgdG9vIGluY29tcGxldGUgb2YgYmUKY2FwYWJsZSBvZiBiZWluZyBwdXQgdG8gYW55IHVzZWZ1bCBwdXJwb3NlLiIKCltMb3JkIE1vdWx0b24sICJUaGUgaW52ZW50aW9uIG9mIGFsZ29yaXRobXMsIGl0cyBnZW5lc2lzLCBhbmQgZ3Jvd3RoIiwKaW4gRy4gQy4gS25vdHQsIGVkLiwgIk5hcGllciB0ZXJjZW50ZW5hcnkgbWVtb3JpYWwgdm9sdW1lIiAoTG9uZG9uLAoxOTE1KSwgcC4gMS0yNDsgcXVvdGVkIGluIENoYXJsZXMgQmFiYmFnZSAiUGFzc2FnZSBmcm9tIHRoZSBMaWZlIG9mIGEKUGhpbG9zb3BoZXIiLCBNYXJ0aW4gQ2FtcGJlbGwtS2VsbHksIGVkLiAoUnV0Z2VycyBVLiBQcmVzcyBhbmQgSUVFRQpQcmVzcywgMTk5NCksIHAuIDM0XS4KCiAtKi0KCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb24KKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNDYXRlZ29yeUxpc3QgLSBHZW5lcmljSW50ZXJmYWNlIEZBUSBQdWJsaWNDYXRlZ29yeUxpc3QgT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBTWU5PUFNJUwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljQ2F0ZWdvcnlMaXN0IE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiB0aGUgY3VycmVudCBGQVEgQ2F0ZWdvcmllcy4KCiAgICBteSAkUmVzdWx0ID0gJE9wZXJhdGlvbk9iamVjdC0+UnVuKAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENhdGVnb3J5ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdNaXNjJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMiwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnT25lTW9yZUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDYXRlZ29yeVRyZWUpICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgY2F0ZWdvcnkgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0NhdGVnb3J5TGlzdC5Ob3RDYXRlZ29yeURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0NhdGVnb3J5TGlzdDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgbXkgQFB1YmxpY0NhdGVnb3J5TGlzdDsKICAgIGZvciBteSAkS2V5ICggc29ydCgga2V5cyAleyRDYXRlZ29yeVRyZWV9ICkgKSB7CiAgICAgICAgbXkgJUNhdGVnb3J5ID0gKAogICAgICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWUgPT4gJENhdGVnb3J5VHJlZS0+eyRLZXl9LAogICAgICAgICk7CiAgICAgICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlMaXN0LCB7JUNhdGVnb3J5fTsKICAgIH0KCiAgICAjIHByZXBhcmUgcmV0dXJuIGRhdGEKICAgIG15ICRSZXR1cm5EYXRhID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHt9LAogICAgfTsKICAgIGlmICggc2NhbGFyIEBQdWJsaWNDYXRlZ29yeUxpc3QgPiAxICkgewogICAgICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntDYXRlZ29yeX0gPSBcQFB1YmxpY0NhdGVnb3J5TGlzdDsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntDYXRlZ29yeX0gPSAkUHVibGljQ2F0ZWdvcnlMaXN0WzBdOwogICAgfQoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb24KKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3QgLSBHZW5lcmljSW50ZXJmYWNlIEZBUSBMYW5ndWFnZUxpc3QgT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBTWU5PUFNJUwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gTGFuZ3VhZ2VMaXN0IE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiB0aGUgY3VycmVudCBGQVEgTGFuZ3VhZ2VzLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgTGFuZ3VhZ2UgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTmFtZT4gJ2VuJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMiwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnT25lTW9yZUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgbXkgJUxhbmd1YWdlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMYW5ndWFnZXMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpMYW5ndWFnZUxpc3Q6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdUaWNrZXRMaXN0Lk5vdExhbmd1YWdlRGF0YScsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiVGlja2V0TGlzdDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBATGFuZ3VhZ2VMaXN0OwogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUxhbmd1YWdlcyApIHsKICAgICAgICBteSAlTGFuZ3VhZ2UgPSAoCiAgICAgICAgICAgIElEICAgPT4gJEtleSwKICAgICAgICAgICAgTmFtZSA9PiAkTGFuZ3VhZ2VzeyRLZXl9LAogICAgICAgICk7CiAgICAgICAgcHVzaCBATGFuZ3VhZ2VMaXN0LCB7JUxhbmd1YWdlfTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICB9LAogICAgfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb24KKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2ggLSBHZW5lcmljSW50ZXJmYWNlIEZBUSBQdWJsaWNGQVFTZWFyY2ggT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBTWU5PUFNJUwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRU2VhcmNoIE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIGxpc3Qgb2YgcHVibGljIEZBUSBlbnRyaWVzLgoKICAgIG15IEBJRHMgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CgogICAgICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICBUaXRsZSAgICAgPT4gJypzb21lIHRpdGxlKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgS2V5d29yZCBhbmQgRmllbGQxLTYKICAgICAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgIEtleXdvcmQgICA9PiAnKndlYnNlcnZlcionLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIENhdGVnb3J5SURzID0+IFsgNywgOCwgOSBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kZXhlcy4KCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gJ0Rvd24nLCAjIChEb3duIHwgVXApICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAjIGRlZmF1bHQ6ICdEb3duJwogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgIDMyLAogICAgICAgICAgICAgICAgMTMsCiAgICAgICAgICAgICAgICAxMiwKICAgICAgICAgICAgICAgIDksCiAgICAgICAgICAgICAgICA2LAogICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgIDQsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAjIHNldCBTZWFyY2hMaW1pdCBvbiAwIGJlY2F1c2Ugd2UgbmVlZCB0byBnZXQgYWxsIGVudHJpZXMKICAgIG15ICRTZWFyY2hMaW1pdCA9IDA7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbXtEYXRhfS0+e09yZGVyQnl9CiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkU29ydEJ5KSAmJiAkU29ydEJ5IG5lICcnICkgewogICAgICAgICRTb3J0QnkgPSBbJFNvcnRCeV07CiAgICB9CgogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17RGF0YX0tPntPcmRlckJ5RGlyZWN0aW9ufQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICBteSAkQ2F0ZWdvcnlJRHM7CgogICAgIyB0aGUgQ2F0ZWdvcnlJRCBwYXJhbSBjb3VsZCBiZSBhbiBBUlJBWSBhbiBTQ0FMQVIgb3IgYW4gZW1wdHkgdmFsdWUKICAgICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSA9ICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSB8fCAnJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9ICkgJiYgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRDYXRlZ29yeUlEcyA9IFsgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IF07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSBuZSAnJyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRHMgPSAkUGFyYW17RGF0YX0tPntDYXRlZ29yeUlEc307CiAgICB9CgogICAgbXkgJExhbmd1YWdlSURzOwoKICAgICMgdGhlIExhbmd1YWdlSUQgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlCiAgICAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gPSAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gfHwgJyc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSApICYmICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBuZSAnJyApIHsKICAgICAgICAkTGFuZ3VhZ2VJRHMgPSBbICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfSBdOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gbmUgJycgKSB7CiAgICAgICAgJExhbmd1YWdlSURzID0gJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9OwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgIG15ICRVc2VySUQgPSAxOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE51bWJlciAgPT4gJFBhcmFte0RhdGF9LT57TnVtYmVyfSAgfHwgJycsCiAgICAgICAgVGl0bGUgICA9PiAkUGFyYW17RGF0YX0tPntUaXRsZX0gICB8fCAnJywKICAgICAgICBXaGF0ICAgID0+ICRQYXJhbXtEYXRhfS0+e1doYXR9ICAgIHx8ICcnLAogICAgICAgIEtleXdvcmQgPT4gJFBhcmFte0RhdGF9LT57S2V5d29yZH0gfHwgJycsCiAgICAgICAgTGFuZ3VhZ2VJRHMgICAgICA9PiAkTGFuZ3VhZ2VJRHMsCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiAkQ2F0ZWdvcnlJRHMsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyRPcmRlckJ5XSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICk7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoIFxAVmlld2FibGVGQVFJRHMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IEZBUSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKSc7CgogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUVNlYXJjaDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBwcmVwYXJlIHJldHVybiBkYXRhCiAgICBteSAkUmV0dXJuRGF0YSA9IHsKICAgICAgICBEYXRhICAgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgIyBzZXQgRkFRIGVudHJ5IGRhdGEKICAgIGlmICggc2NhbGFyIEBWaWV3YWJsZUZBUUlEcyA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9IFxAVmlld2FibGVGQVFJRHM7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57SUR9ID0gJFZpZXdhYmxlRkFRSURzWzBdOwogICAgfQoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb21tb24KKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQgLSBHZW5lcmljSW50ZXJmYWNlIEZBUSBQdWJsaWNGQVFHZXQgT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBTWU5PUFNJUwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKCnBlcmZvcm0gUHVibGljRkFRR2V0IE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhIFB1YmxpYyBGQVEgZW50cnkuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSXRlbUlEID0gJzMyLDMzJywKICAgICAgICAgICAgR2V0QXR0YWNobWVudENvbnRlbnRzID0gMSwgICAgICAgICAgICAgICAgICAgICMgMHwxLCBkZWZhdWx0cyB0byAxCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgSXRlbUlEID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMiwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMiwKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMiwKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzIsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5TmFtZSAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgICAgICAgID0+ICdUaGUgU3ltcHRvbXMnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgICAgICAgID0+ICdUaGUgUHJvYmxlbScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQzICAgICAgICAgICAgPT4gJ1RoZSBTb2x1dGlvbicsCiAgICAgICAgICAgICAgICAgICAgRmllbGQ0ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNSAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDYgICAgICAgICAgICA9PiAnQ29tbWVudHMnLAogICAgICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgICAgICAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICAgICAgICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgICAgICAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJzU0MDI4NicsICAgICAgICAgICAgICAgICMgZmlsZSBzaXplIGluIGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nLCAgICAgICAgICAgICAgICAgICAjIGJhc2U2NCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWZ5IGlmIGlzIGFuIGlubGluZSBhdHRhY2htZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgICA9PiAzNCAgICAgICAgICAgICAgICAgICAgICAgIyBGaWxlSUQgZm9yIHJlbGF0aW9uIHdpdGggcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJzU0MDI4NicsICAgICAgICAgICAgICAgICMgZmlsZSBzaXplIGluIGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnUGVuY2lsLmpwZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJywgICAgICAgICAgICAgICAgICAgIyBiYXNlNjQgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lmeSBpZiBpcyBhbiBpbmxpbmUgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gMzUgICAgICAgICAgICAgICAgICAgICAgICMgRmlsZUlEIGZvciByZWxhdGlvbiB3aXRoIHJpY2ggdGV4dCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzMsCiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMzLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeU5hbWUgICAgID0+ICdDYXRlZ29yeUQ6OkNhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5RScsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDEgICAgICAgICAgICA9PiAnVGhlIFN5bXB0b21zJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDIgICAgICAgICAgICA9PiAnVGhlIFByb2JsZW0nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgICAgICAgID0+ICdUaGUgU29sdXRpb24nLAogICAgICAgICAgICAgICAgICAgIEZpZWxkNCAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDUgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgICAgICAgPT4gJ0NvbW1lbnRzJywKICAgICAgICAgICAgICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgICAgICAgICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgICAgICAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgICAgICAgICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWQgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgICAgICAgICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtEYXRhfS0+e0l0ZW1JRH0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUUdldDogR290IG5vIEl0ZW1JRCEiLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17RGF0YX0tPntHZXRBdHRhY2htZW50Q29udGVudHN9ICkgKSB7CiAgICAgICAgJFBhcmFte0RhdGF9LT57R2V0QXR0YWNobWVudENvbnRlbnRzfSA9IDE7CiAgICB9CgogICAgbXkgJEVycm9yTWVzc2FnZSA9ICcnOwoKICAgIG15ICRSZXR1cm5EYXRhID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW1JRHMgPSBzcGxpdCggLywvLCAkUGFyYW17RGF0YX0tPntJdGVtSUR9ICk7CiAgICBteSBASXRlbTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICBteSAkVXNlcklEID0gMTsKCiAgICAjIGdldCBwdWJsaWMgc3RhdGUgdHlwZXMKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CgogICAgIyBzdGFydCBtYWluIGxvb3AKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgRkFRIGVudHJ5CiAgICAgICAgbXkgJUZBUUVudHJ5ID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCBcJUZBUUVudHJ5ICkgKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTm90VmFsaWRGQVFJRCcsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUUdldDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJEFwcHJvdmFsU3VjY2VzcyA9IDE7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICAgICAkQXBwcm92YWxTdWNjZXNzID0gJEZBUUVudHJ5e0FwcHJvdmVkfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJEFwcHJvdmFsU3VjY2VzcyB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRW50cnl7U3RhdGVUeXBlSUR9IH0gKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IEZBUSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJEFydGljbGUgPSB7CiAgICAgICAgICAgIEFydGljbGUgPT4gXCVGQVFFbnRyeSwKICAgICAgICB9OwoKICAgICAgICBteSBASW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAxLCAgICAgICAgICMgICAoIDB8MSwgZGVmYXVsdCAxKQogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUZpbGU7CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxASW5kZXggKSApIHsKCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50czsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChASW5kZXgpIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtEYXRhfS0+e0dldEF0dGFjaG1lbnRDb250ZW50c30gKSB7CiAgICAgICAgICAgICAgICAgICAgJUZpbGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gYmFzZTY0CiAgICAgICAgICAgICAgICAgICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgICAgICAgICAgICAgICAgICRGaWxle0lubGluZX0gID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9OwogICAgICAgICAgICAgICAgICAgICRGaWxle0ZpbGVJRH0gID0gJEF0dGFjaG1lbnQtPntGaWxlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJUZpbGUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAkQXR0YWNobWVudC0+e0lubGluZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgeyVGaWxlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgRkFRIGVudHJ5IGRhdGEKICAgICAgICAgICAgJEZBUUVudHJ5e0F0dGFjaG1lbnR9ID0gXEBBdHRhY2htZW50czsKICAgICAgICB9CgogICAgICAgICMgYWRkCiAgICAgICAgcHVzaCBASXRlbSwgXCVGQVFFbnRyeTsKICAgIH0gICAgIyBmaW5pc2ggbWFpbiBsb29wCgogICAgaWYgKCAhc2NhbGFyIEBJdGVtICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBGQVEgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5Ob0ZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUUdldDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0ZBUUl0ZW19ID0gXEBJdGVtOwoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2RrZW5kdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnVW5kZXJrYXRlZ29yaSBhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaWwgYmxpdmUgdmlzdCBzb20ga29tbWVudGFyIGkgRXhwbG9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWsgYWYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTaWRzdCDDpm5kcmV0IGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1N0ZW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRIE51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RhayBmb3IgZGluIHN0ZW1tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgYWxsZXJlZGUgc3RlbXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0ZSB2YWxndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTnllc3RlIGFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1NpZHN0IMOmbmRyZWRlIGFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWtsZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdla3N0ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ29mZmVudGxpZyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnkgRkFRIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2Vrc3Rlcm4gKGt1bmRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChhZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEtQXJ0aWtlbCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1NjaGzDvHNzZWx3w7ZydGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnRWluZSBLYXRlZ29yaWUgaXN0IGVyZm9yZGVybGljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdGcmVpZ2FiZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEtS2F0ZWdvcmllbi1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgbMO2c2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnVW50ZXJrYXRlZ29yaWUgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnV8OkaGxlbiBTaWUgbWluZGVzdGVucyBlaW5lIEJlcmVjaHRpZ3VuZ3NncnVwcGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudGVuLUdydXBwZW4sIGRpZSBiZXJlY2h0aWd0IHNpbmQsIGF1ZiBGQVEtQXJ0aWtlbCBpbiBkaWVzZXIgS2F0ZWdvcmllIHp1enVncmVpZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnV2lyZCBpbSBFeHBsb3JlciBhbHMgS29tbWVudGFyIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dvbGxlbiBTaWUgZGllc2UgS2F0ZWdvcmllIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1NpZSBrw7ZubmVuIGRpZXNlIEthdGVnb3JpZSBuaWNodCBsw7ZzY2hlbi4gU2llIHdpcmQgaW4gbWluZGVzdGVucyBlaW5lbSBGQVEtQXJ0aWtlbCB2ZXJ3ZW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGllc2UgS2F0ZWdvcmllIHdpcmQgaW4gZGVuIGZvbGdlbmRlbiBGQVEtQXJ0aWtlbG4gdmVyd2VuZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RpZXNlIEthdGVnb3JpZSBpc3QgZWluZSBFbHRlcm4tS2F0ZWdvcmllIGbDvHIgZm9sZ2VuZGUgS2F0ZWdvcmllbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlbiBGQVEtQXJ0aWtlbCB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU2NobmVsbHN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZHMgc2luZCBlcmxhdWJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdFcndlaXRlcnRlIFN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbnRlcmthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdLZWluZSBVbnRlcmthdGVnb3JpZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfDhG5kZXJ1bmdzdmVybGF1ZiB2b24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnS2VpbmUgRkFRLUpvdXJuYWxkYXRlbiBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRLVNwcmFjaGVuLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnVmVyd2VuZGVuIFNpZSBkaWVzZSBGdW5rdGlvbiwgd2VubiBTaWUgbWl0IG1laHJlcmVuIFNwcmFjaGVuIGFyYmVpdGVuIHdvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnU3ByYWNoZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTcHJhY2hlIEzDtnNjaGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgQmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBTcHJhY2hlIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdTaWUga8O2bm5lbiBkaWVzZSBTcHJhY2hlIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEaWVzZSBTcHJhY2hlIHdpcmQgaW4gZGVuIGZvbGdlbmRlbiBGQVEtQXJ0aWtlbG4gdmVyd2VuZGV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnS29udGV4dC1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUS1BcnRpa2VsIHBybyBTZWl0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdLZWluZSBGQVEtRGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1NjaGzDvHNzZWx3b3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdBYnN0aW1tdW5nIChadW0gQmVpc3BpZWw6ID0xMCBvZGVyID42MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnQW50ZWlsIChadW0gQmVpc3BpZWw6ID0yNSUgb2RlciA+NzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0dlbmVobWlndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMZXR6dGUgw4RuZGVydW5nIHZvbjonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdFcnN0ZWxsemVpdCBkZXMgRkFRLUFydGlrZWwgKGRhdm9yL2RhbmFjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRXJzdGVsbHplaXQgZGVzIEZBUS1BcnRpa2VsICh6d2lzY2hlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdMZXR6dGUgw4RuZGVydW5nIGRlcyBGQVEtQXJ0aWtlbCAoZGF2b3IvZGFuYWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdMZXR6dGUgw4RuZGVydW5nIGRlcyBGQVEtQXJ0aWtlbCAoendpc2NoZW4pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1Wb2xsdGV4dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBTdWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbGF1c3dhaGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ0Fic3RpbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnS2VpbmUgQWJzdGltbXVuZ3NlaW5zdGVsbHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ3NwZXppZmlzY2hlIEFic3RpbW11bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnWnVtIEJlaXNwaWVsOiA9MTAgb2RlciA+NjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0FudGVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnS2VpbmUgQW50ZWlsLUVpbnN0ZWxsdW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ2Jlc3RpbW10ZXIgQW50ZWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnWnVtIEJlaXNwaWVsOiA9MjUlIG9kZXIgPjc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0Vyc3RlbGx6ZWl0IGRlcyBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ2xldHp0ZSDDhG5kZXJ1bmcgZGVzIEZBUS1BcnRpa2VsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXdlcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd2b24gNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ0Jld2VydHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0F0dGFjaG1lbnQgSGVydW50ZXJsYWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1VtIGRpZSBMaW5rcyBpbSBmb2xnZW5kZW4gQmVpdHJhZyB6dSDDtmZmbmVuLCBrYW5uIGVzIG5vdHdlbmRpZyBzZWluIFN0cmcgb2RlciBTaGlmdCB6dSBkcsO8Y2tlbiwgd8OkaHJlbmQgYXVmIGRlbiBMaW5rIGdla2xpY2t0IHdpcmQgKGFiaMOkbmdpZyB2b20gdmVyd2VuZGV0ZW4gQnJvd3NlciB1bmQgQmV0cmllYnNzeXN0ZW0pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1dpZSBoaWxmcmVpY2ggd2FyIGRpZXNlciBBcnRpa2VsPyBCaXR0ZSBnZWJlbiBTaWUgSWhyZSBCZXdlcnR1bmcgYWIgdW5kIGhlbGZlbiBTaWUgbWl0IGRpZSBRdWFsaXTDpHQgZGVyIEZBUS1EYXRlbmJhbmsgenUgdmVyYmVzc2Vybi4gVmllbGVuIERhbmshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmljaHQgaGlsZnJlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3NlaHIgaGlsZnJlaWNoJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdGw7xnZSBkZW4gRkFRLVRpdGVsIGFscyBBcnRpa2VsYmV0cmVmZiBoaW56dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRLVRleHQgZWluZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEtTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUS1UZXh0ICYgTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRICYgTGluayBlaW5mw7xnZW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdLZWluZSBGQVEtQXJ0aWtlbCBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdWb2xsdGV4dC1TdWNoZSBpbiBGQVEtQXJ0aWtlbG4gKHouIEIuICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnV2FobGVpbnNjaHLDpG5rdW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ051ciBGQVEtQXJ0aWtlbCBtaXQgQWJzdGltbXVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnQW50ZWlsc2Jlc2NocsOkbmt1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdOdXIgRkFRLUFydGlrZWwgbWl0IGVpbmVtIEFudGVpbCB2b24uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ051ciBGQVEtQXJ0aWtlbCBlcnN0ZWxsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdOdXIgVGlja2V0cywgZGllIGVyc3RlbGx0IHd1cmRlbiB6d2lzY2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdTdWNocHJvZmlsIGFscyBWb3JsYWdlPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGlrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTdWNoZSBuYWNoIEFydGlrZWxuIG1pdCBTY2hsw7xzc2Vsd8O2cnRlcm4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnw5ZmZmVudGxpY2gnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1p1csO8Y2sgenVtIEZBUS1FeHBsb3Jlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnU2llIGJlbsO2dGlnZW4gTGVzZS0gdW5kIFNjaHJlaWJyZWNodGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdLZWluZSBLYXRnb3JpZW4gZ2VmdW5kZW4gaW4gZGVuZW4gZGVyIEJlbnV0emVyIExlc2UtL1NjaHJlaWJyZWNodGUgYmVzaXR6dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnU3RhbmRhcmRzcHJhY2hlIHd1cmRlIG5pY2h0IGdlZnVuZGVuLiBOZXVlIFN0YW5kYXJkc3ByYWNoZSBrb25udGUgbmljaHQgZXJzdGVsbHQgd2VyZGVuLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ0JlbsO2dGlnZSBLYXRlZ29yaWVJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRWluZSBLYXRlZ29yaWUgYmVuw7Z0aWd0IGVpbmVuIE5hbWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGV4aXN0aWVydCBiZXJlaXRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0RpZXNlIEthdGVnb3JpZSBleGlzdGllcnQgYmVyZWl0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdFcyB3dXJkZSBrZWluZSBLYXRlZ29yaWVJRCB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnS2F0ZWdvcmllICVzIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEtS2F0ZWdvcmllIGFrdHVhbGlzaWVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUS1LYXRlZ29yaWUgaGluenVnZWbDvGd0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdFcyB3dXJkZSBrZWluZSBJdGVtSUQgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnU2llIGJlc2l0emVuIGtlaW5lIEJlcmVjaHRpZ3VuZyBmw7xyIGRpZXNlIEthdGVnb3JpZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnRkFRIEFydGlrZWwgJXMga29ubnRlIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0RpZSBLYXRlZ29yaWVJRCAlcyBpc3QgdW5nw7xsdGlnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRIFZlcmxhdWYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdEZXIgTmFtZSBpc3QgZXJmb3JkZXJsaWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RpZXNlIFNwcmFjaGUgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJ1NwcmFjaGUgJXMga29ubnRlIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUS1TcHJhY2hlIGFrdHVhbGlzaWVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUS1TcHJhY2hlIGhpbnp1Z2Vmw7xndCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGV0enRlIEFrdHVhbGlzaWVydW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBEeW5hbWlzY2hlIEZlbGRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdLZWluIEVyZ2VibmlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLU51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICdMZXR6dGUgw4RuZGVydW5nIHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ2lzdCBnbGVpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnR3LDtsOfZXIgYWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdpc3QgZ3LDtsOfZXIvZ2xlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ0tsZWluZXIgYWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdpc3Qga2xlaW5lci9nbGVpY2gnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnQmVuw7Z0aWdlIERhdGVpSUQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVmllbGVuIERhbmsgZsO8ciBJaHJlIEJld2VydHVuZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdTaWUgaGFiZW4gYmVyZWl0cyBhYmdlc3RpbW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0tlaW5lIEJld2VydHVuZyBhdXNnZXfDpGhsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQWJzdGltbXVuZ3NmdW5rdGlvbiBpc3QgbmljaHQgYWt0aXZpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEtQXJ0aWtlbC1BdXNkcnVjayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0Vyc3RlbGx0IHp3aXNjaGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLUFydGlrZWwgKG5ldSBlcnN0ZWxsdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEtQXJ0aWtlbCAoYWt0dWFsaXNpZXJ0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRLUFydGlrZWwgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdLZWluIFR5cCBpc3QgZGVmaW5pZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdSU1MgRGF0ZWkga2FubiBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVEgVm9sbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBLdW5kZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gS3VuZGVuIChGQVEgVm9sbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIMOWZmZlbnRsaWNoICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gw5ZmZmVudGxpY2ggKEZBUSBWb2xsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEaWVzZXIgQXJ0aWtlbCBpc3QgbGVlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBlcnN0ZWxsdGUgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgRkFRLUFydGlrZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnw7ZmZmVudGxpY2gnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdFaW4gRmlsdGVyIHp1ciBhdXRvbWF0aXNjaGVuIEdlbmVyaWVydW5nIHZvbiBGQVEtTGlua3MsIHdlbm4gZWluIEhpbndlaXMgYXVmIGVpbmVuIEZBUS1BcnRpa2VsIGlkZW50aWZpemllcnQgd2lyZC4gRGFzIEVsZW1lbnQgSW1hZ2UgZXJsYXVidCB6d2VpIEVpbmdhYmVmb3JtZW46IEVyc3RlbnMgZGVyIE5hbWUgZWluZXMgSWNvbnMgKHouIEIuIGZhcS5wbmcpLiBJbiBkaWVzZW0gRmFsbCB3aXJkIGF1ZiBkYXMgR3JhZmlrLVZlcnplaWNobmlzIGRlcyBPVFJTIHp1Z2VncmlmZmVuLiBBbHMgendlaXRlIE3DtmdsaWNoa2VpdCBrYW5uIG1hbiBhYmVyIGF1Y2ggZGVuIGRpcmVrdGVuIExpbmsgenVyIEdyYWZpayBhbmdlYmVuICh6LiBCLiBodHRwOi8vb3Rycy5vcmcvZmFxLnBuZykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0ZBUS1BcnRpa2VsIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLUZhcmJlIGbDvHIgZGFzIEJld2VydHVuZ3MtRXJnZWJuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdDYWNoZXplaXQgZsO8ciBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3JpZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnS3VuZGVuLUZBUSBEcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdLdW5kZW4gRkFRIERldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnS3VuZGVuLUZBUSBTdWNoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdLdW5kZW4tRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnRGV6aW1hbHN0ZWxsZW4gZGVzIEVyZ2Vibmlzc2VzIGRlciBBcnRpa2VsYmV3ZXJ0dW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnUm9vdC1LYXRlZ29yaWUtTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBGQVEtQXJ0aWtlbCBpbSBFaW56ZWwtU3ByYWNoLU1vZHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdTdGFuZGFyZG3DpMOfaWcgbWF4aW1hbCBhbmdlemVpZ3RlIFplaWNoZW4gaW4gZGVuIFRpdGVsbiBkZXIgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1N0YW5kYXJkLVByaW9yaXTDpHQgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YW5kYXJkIFN0YXR1cyBlaW5lcyBGQVEtRWludHJhZ3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZC1TdGF0dXMgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQgVGlja2V0dHlwIGbDvHIgZGllIEdlbmVobWlndW5nIHZvbiBGQVEtQXJ0aWtlbG4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkd2VydCBkZXMgQWN0aW9uLVBhcmFtZXRlcnMgZsO8ciBkZW4gw7ZmZmVudGxpY2hlbiBGQVEtQmVyZWljaC4gRGVyIEFjdGlvbi1QYXJhbWV0ZXIgd2lyZCB2b24gZGVuIFNrcmlwdGVuIGRlcyBTeXN0ZW1zIGJlbnV0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgb2IgZGVyIEZBUS1UaXRlbCBtaXQgZGVtIEFydGlrZWxiZXRyZWZmIHZlcmtldHRldCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBlaW4gw5xiZXJzaWNodHMtTW9kdWwgdW0gZGllIFNtYWxsLUFuc2ljaHQgaW0gRkFRLUpvdXJuYWwgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiDDnGJlcnNpY2h0cy1Nb2R1bCB1bSBkaWUgU21hbGwtQW5zaWNodCBlaW5lciBGQVEtTGlzdGUgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVyIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlcnMgaW0gUHVibGljLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkYXR0cmlidXRlIGbDvHIgZGllIFN1Y2hlIGluIGRlbiBIw6R1ZmlnLWdlc3RlbGx0ZW4tRnJhZ2VuIGltIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbiBTdWNoZGlhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIEluZm9ybWF0aW9uZW4sIHdlbGNoZSBpbiBlaW4gRkFRLWJhc2llcmVuZGVzIFRpY2tldCBlaW5nZWdlYmVuIHdlcmRlbi4gIktvbXBsZXR0ZSBGQVEiIGJlaW5oYWx0ZXQgZGVuIFRleHQsIEFuaMOkbmdlIHVuZCBJbmxpbmUtQmlsZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFBhcmFtZXRlciBmw7xyIGRhcyDDnGJlcnNpY2h0c3NlaXRlbi1CYWNrZW5kLiAiTGltaXQiIGRlZmluaWVydCBkaWUgQW56YWhsIGRlciBFaW50csOkZ2UsIGRpZSBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0IHdlcmRlbi4gIkdyb3VwIiB3aXJkIHZlcndlbmRldCwgdW0gZGVuIFp1Z3JpZmYgYXVmIGRhcyBQbHVnaW4genUgYmVncmVuemVuIChic3B3LiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgc3RldWVydCwgb2IgZGFzIFBsdWdpbiBzdGFuZGFyZG3DpMOfaWcgYWt0aXZpZXJ0IGlzdCBvZGVyIG9iIGRlciBVc2VyIGVzIG1hbnVlbGwgYWt0aXZpZXJlbiBtdXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbSBGQVEtRXhwbG9yZXIuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGltIEZBUS1Kb3VybmFsLiBEaWVzZSBPcHRpb24gaGF0IGtlaW5lIEF1c3dpcmt1bmcgYXVmIGRpZSBQb3NpdGlvbiBkZXIgU3BhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGluIGRlciBGQVEtU3VjaGUuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluaWVydCB3byBkZXIgTGluayBhdXMgXCdGQVEgZWluZsO8Z2VuXCcgYW5nZXplaWd0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXRpb24gZGVyIGZyZWllbiBUZXh0ZmVsZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdEaWVzZSBGQVEgbMO2c2NoZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSBoaW56dWbDvGdlbiIgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIE3DtmdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gZGVha3RpdmllcnQsIDEgPSBha3RpdmllcnQsIDIgPSBha3RpdmllcnQgdW5kIGJlbsO2dGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSBiZWFyYmVpdGVuIiBpbSBBZ2VudGVuLUludGVyZmFjZS4gTcO2Z2xpY2hlIEVpbnN0ZWxsdW5nZW46IDAgPSBkZWFrdGl2aWVydCwgMSA9IGFrdGl2aWVydCwgMiA9IGFrdGl2aWVydCB1bmQgYmVuw7Z0aWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSDDnGJlcnNpY2h0IiBpbSBLdW5kZW4tSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSDDnGJlcnNpY2h0IiBpbSBQdWJsaWMtSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSBkcnVja2VuIiBpbSBBZ2VudGVuLUludGVyZmFjZS4gTcO2Z2xpY2hlIEVpbnN0ZWxsdW5nZW46IDAgPSBkZWFrdGl2aWVydCwgMSA9IGFrdGl2aWVydCwgMiA9IGFrdGl2aWVydCB1bmQgYmVuw7Z0aWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0FuemVpZ2Ugdm9uIGR5bmFtaXNjaGVuIEZlbGRlciBpbiBkZXIgw5ZiZXJmbMOkY2hlICJGQVEgZHJ1Y2tlbiIgaW0gS3VuZGVuLUludGVyZmFjZS4gTcO2Z2xpY2hlIEVpbnN0ZWxsdW5nZW46IDAgPSBkZWFrdGl2aWVydCwgMSA9IGFrdGl2aWVydCwgMiA9IGFrdGl2aWVydCB1bmQgYmVuw7Z0aWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXIgaW4gZGVyIMOWYmVyZmzDpGNoZSAiRkFRIGRydWNrZW4iIGltIFB1YmxpYy1JbnRlcmZhY2UuIE3DtmdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gZGVha3RpdmllcnQsIDEgPSBha3RpdmllcnQsIDIgPSBha3RpdmllcnQgdW5kIGJlbsO2dGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0FuemVpZ2Ugdm9uIGR5bmFtaXNjaGVuIEZlbGRlciBpbiBkZXIgw5ZiZXJmbMOkY2hlICJGQVEgZHVyY2hzdWNoZW4iIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXIgaW4gZGVyIMOWYmVyZmzDpGNoZSAiRkFRIGR1cmNoc3VjaGVuIiBpbSBLdW5kZW4tSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQW56ZWlnZSB2b24gZHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciDDlmJlcmZsw6RjaGUgIkZBUSBkdXJjaHN1Y2hlbiIgaW0gUHVibGljLUludGVyZmFjZS4gTcO2Z2xpY2hlIEVpbnN0ZWxsdW5nZW46IDAgPSBkZWFrdGl2aWVydCwgMSA9IGFrdGl2aWVydCwgMiA9IGFrdGl2aWVydCB1bmQgYmVuw7Z0aWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXIgaW4gZGVyIMOWYmVyZmzDpGNoZSAic21hbGwgRkFRIMOcYmVyc2ljaHQiIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXJuIGluIGRlciBPYmVyZmzDpGNoZSAiRkFRIFpvb20iIGltIEFnZW50ZW4tSW50ZXJmYWNlLiBNw7ZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IGRlYWt0aXZpZXJ0LCAxID0gYWt0aXZpZXJ0LCAyID0gYWt0aXZpZXJ0IHVuZCBiZW7DtnRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXJuIGluIGRlciBPYmVyZmzDpGNoZSAiRkFRIFpvb20iIGltIEt1bmRlbi1JbnRlcmZhY2UuIE3DtmdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gZGVha3RpdmllcnQsIDEgPSBha3RpdmllcnQsIDIgPSBha3RpdmllcnQgdW5kIGJlbsO2dGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBbnplaWdlIHZvbiBkeW5hbWlzY2hlbiBGZWxkZXJuIGluIGRlciBPYmVyZmzDpGNoZSAiRkFRIFpvb20iIGltIFB1YmxpYy1JbnRlcmZhY2UuIE3DtmdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gZGVha3RpdmllcnQsIDEgPSBha3RpdmllcnQsIDIgPSBha3RpdmllcnQgdW5kIGJlbsO2dGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0ZBUSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdNdWx0aXBsZSBTcHJhY2hlbiBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQmV3ZXJ0dW5ncy1NZWNoYW5pc211cyBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdBbnNpY2h0IG5hY2ggS2F0ZWdvcmllbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVEtQmVyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEtQmVyZWljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVEgTMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0ZBUSBCZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRLUpvdXJuYWwgQW56ZWlnZS1MaW1pdCBmw7xyIGRpZSBTbWFsbC1BbnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRLcOcYmVyc2ljaHQgImtsZWluZXMiIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdGQVEgRHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFRIGxpbWl0IHBybyBTZWl0ZSBmw7xyIGRhcyBGQVEtSm91cm5hbCBpbiBkZXIgU21hbGwtQW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUSBsaW1pdCBwcm8gU2VpdGUgZsO8ciBkaWUgU21hbGwtQW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ1N1Y2gtQmFja2VuZC1Sb3V0ZXIgZsO8ciBkaWUgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdGZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGZWxkNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ1ZvbGxzdMOkbmRpZ2VzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcGUgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0ZBUS1IaXN0b3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW50ZXJuZSBGQVEtRmVsZGVyIGluIGVpbmVtIEZBUS1iYXNpZXJ0ZW5UaWNrZXQgdmVyd2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0RlbiBOYW1lbiBqZWRlcyBGQVEtRmVsZGVzIGVpbmVtIEZBUS1iYXNpZXJ0ZW4gVGlja2V0IHZlcndlbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdPYmVyZmzDpGNoZSBhdWYgZGVyIGRpZSBTY2huZWxsc3VjaGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHJhY2hlbi1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0RpZXNlIEZBUSBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgdmVya27DvHBmZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGUgZGVyIFN0YXR1c3R5cGVuLCBkaWUgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZSBnZW51dHp0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0ZSBkZXIgU3RhdHVzdHlwZW4sIGRpZSBpbiBkZXIgS3VuZGVub2JlcmZsw6RjaGUgZ2VudXR6dCB3ZXJkZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RlIGRlciBTdGF0dXN0eXBlbiwgZGllIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlIGdlbnV0enQgd2VyZGVuIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXJsIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLUV4cGxvcmVyIGltIFB1YmxpYy1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtSm91cm5hbCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gS3VuZGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW0gSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLUV4cGxvcmVyIGRlciBBZ2VudGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEdyw7bDn2Ugdm9uIFRpdGVsbiBpbiBIw6R1ZmlnLWdlc3RlbGx0ZW4tRnJhZ2VuLUJlaXRyw6RnZW4gd2VsY2hlIGltIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1FeHBsb3JlciBkZXIgS3VuZGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbSBIw6R1ZmlnLWdlc3RlbGx0ZS1GcmFnZW4tRXhwbG9yZXIgZGVyIMO2ZmZlbnRsaWNoZW4gw5xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbiBkZXIgSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLVN1Y2hlIGRlciBBZ2VudGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbiBkZXIgSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLVN1Y2hlIGRlciBLdW5kZW7DvGJlcnNpY2h0IGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbiBkZXIgSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLVN1Y2hlIGRlciDDtmZmZW50bGljaGVuIMOcYmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEdyw7bDn2Ugdm9uIFRpdGVsbiBpbiBIw6R1ZmlnLWdlc3RlbGx0ZW4tRnJhZ2VuLUJlaXRyw6RnZW4gd2VsY2hlIGluIEZBUS1CZXJpY2h0ZW4gaW4gZGVyIEFnZW50ZW7DvGJlcnNpY2h0IGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBHZW5lcmllcmVuIGRlcyBIVE1MICJPcGVuU2VhcmNoIiBQcm9maWxzIHp1ciBGQVEtU3VjaGUgaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOZXVlciBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOZXVlIEZBUS1BcnRpa2VsIGJlbsO2dGlnZW4gZWluZSBGcmVpZ2FiZSB2b3IgZGVyIFZlcsO2ZmZlbnRsaWNodW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbSBGQVEtRXhwbG9yZXIgaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgaW4gU3VjaGVyZ2Vibmlzc2VuIGRpZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBwcm8gU2VpdGUgaW4gZGVyIEt1bmRlbm9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgaW4gU3VjaGVyZ2Vibmlzc2VuIGRpZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBwcm8gU2VpdGUgaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW56YWhsIGRlciB6dSBhbnplaWdlbmRlbiBBcnRpa2VsIGluIGxldHp0ZW4gw4RuZGVydW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW4genVsZXR6dCBlcnN0ZWxsdGUgQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBbnphaGwgZGVyIGFuenV6ZWlnZW5kZW4gQXJ0aWtlbCBpbSBUb3AgMTAgRmVhdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIFNlaXRlbiAoaW4gZGVuZW4gRkFRLUFydGlrZWwgYW5nZXplaWd0IHdlcmRlbikgZsO8ciBkaWUgU21hbGwtQW5zaWNodCBkZXMgRkFRLUpvdXJuYWxzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIFNlaXRlbiAoaW4gZGVuZW4gRkFRLUFydGlrZWwgYW5nZXplaWd0IHdlcmRlbikgZsO8ciBkaWUgU21hbGwtQW5zaWNodCBkZXMgRkFRLU92ZXJpZXdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ZBUSBkcnVja2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnw5ZmZmVudGxpY2hlcyBGQVEgRHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ8OWZmZlbnRsaWNoZSBGQVEgRGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnw5ZmZmVudGxpY2hlcyBGQVEgU3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ8OWZmZlbnRsaWNoZXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdRdWV1ZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0dld2ljaHR1bmcgZsO8ciBkaWUgQmV3ZXJ0dW5nLiBEZXIgS2V5IG11c3MgaW4gUHJvemVudCBhbmdlZ2ViZW4gd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFRIGR1cmNoc3VjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldHp0IGRpZSBtYXhpbWFsZSBIw7ZoZSAoaW4gUGl4ZWxuKSB2b24gSW5saW5lLUhUTUwtRmVsZGVyIGluIEN1c3RvbWVyRkFRWm9vbSAodW5kIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXR6dCBkaWUgbWF4aW1hbGUgSMO2aGUgKGluIFBpeGVsbikgdm9uIElubGluZS1IVE1MLUZlbGRlciBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQ3VzdG9tZXJGQVFab29tICh1bmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnWmVpZ3QgZGllIFNjaGFsdGZsw6RjaGUgIkZBUS1MaW5rIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCAmIExpbmsgZWluZsO8Z2VuIC8gS29tcGxldHRlIEZBUSAmIExpbmsgZWluZsO8Z2VuIiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCBlaW5mw7xnZW4gLyBLb21wbGV0dGUgRkFRIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ0hUTUwgRGFyc3RlbGx1bmcgZGVyIEZBUS1BcnRpa2VsIGVpbnNjaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdGQVEgUGZhZCBhbnplaWdlbiBqYS9uZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnQXJ0aWtlbCBhdXMgU3Via2F0ZWdvcmllbiBhbnplaWdlbiBqYS9uZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBMYXN0Q2hhbmdlIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgTGFzdENyZWF0ZSBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBUb3AgMTAgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbnRlcmZhY2VzIGluIGRlbmVuIGRhcyBWb3RpbmcgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIG1pdCBhbmRlcmVuIE9iamVrdGVuIHp1IHZlcmtuw7xwZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCB6dSBsw7ZzY2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCB1bSBkaWUgSGlzdG9yaWUgZWluZXMgRkFRLUFydGlrZWxzIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCB6dXIgdm9yaGVyaWdlbiBTZWl0ZSB6dXLDvGNrIHp1IGdlaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCB6dSBkcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ0zDtnN1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1N5bXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnTnVyIFRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0RlciBJZGVudGlmaWthdG9yIGbDvHIgZWluZW4gRkFRLUFydGlrZWwsIHouIEIuIEZBUSMsIEtCIywgTXlGQVEjLiBEZXIgU3RhbmRhcmR3ZXJ0IGlzdCBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdOb3JtYWxcJyBtaXQgYW5kZXJlbiBcJ0ZBUVwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdGQVFcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBkYXNzIGVpbiBcJ0ZBUVwnLU9iamVrdGUgbWl0IGRlbSBMaW5rdHlwIFwnTm9ybWFsXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdQYXJlbnRDaGlsZFwnIG1pdCBhbmRlcmVuIFwnVGlja2V0XCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdCb2R5IGRlcyBUaWNrZXRzIHp1ciBGcmVpZ2FiZSBlaW5lcyBGQVEtQXJ0aWtlbHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdCZXRyZWZmIGRlcyBUaWNrZXRzIHp1ciBGcmVpZ2FiZSBlaW5lcyBGQVEtQXJ0aWtlbHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdXZXJremV1Z2xlaXN0ZW5laW50cmFnIGbDvHIgZGVuIFNjaG5lbGx6dWdyaWZmLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuIChLdW5kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoQWdlbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ8O2ZmZlbnRsaWNoICjDtmZmZW50bGljaCknOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGQgRkFRIEFydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLZXl3b3Jkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXBwcm92YWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRkIGNhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0RlbGV0ZSBDYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkZCBDYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdCBDYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3J5IG9mJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFRIEV4cGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1F1aWNrIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdBZHZhbmNlZCBTZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRIEFydGljbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3Rvcnkgb2YnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FkZCBsYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdEZWxldGUgTGFuZ3VhZ2UgJSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGQgTGFuZ3VhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXQgTGFuZ3VhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29udGV4dCBTZXR0aW5ncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gRkFRIGRhdGEgZm91bmQuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0tleXdvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdGUgKGUuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdSYXRlIChlLmcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0FwcHJvdmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFGdWxsdGV4dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBTZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWxlIFNlbGVjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTm8gdm90ZSBzZXR0aW5ncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1NwZWNpZmljIHZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2UuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdSYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdObyByYXRlIHNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpYyByYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZS5nLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1JhdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ291dCBvZiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTm8gdm90ZXMgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEb3dubG9hZCBBdHRhY2htZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbm90IGhlbHBmdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAndmVyeSBoZWxwZnVsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcnQgRkFRIFRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJ0IEZ1bGwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VydCBGQVEgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZvdGUgcmVzdHJpY3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmF0ZSByZXN0cmljdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpY2xlIE51bWJlcj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQdWJsaWMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ0JhY2sgdG8gRkFRIEV4cGxvcmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBjYXRlZ29yeSBhZGRlZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ1RoZSBuYW1lIGlzIHJlcXVpcmVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUSBsYW5ndWFnZSBhZGRlZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGFzdCB1cGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaWMgRmllbGRzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdObyAlcyBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUaGFua3MgZm9yIHlvdXIgdm90ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05vIHJhdGUgc2VsZWN0ZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEgQXJ0aWNsZSBQcmludCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUUZ1bGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ3VzdG9tZXIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUHVibGljICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdUaGlzIGFydGljbGUgaXMgZW1wdHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBGQVEgYXJ0aWNsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpYyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQWRkIEZBUSBhcnRpY2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIGNvbG91ciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdDYWNoZSBUaW1lIHRvIExlYXZlIGZvciBGQVEgaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdDYXRlZ29yeSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdDdXN0b21lciBGQVEgUHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ0N1c3RvbWVyIEZBUSBab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ0N1c3RvbWVyIEZBUSBzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdDdXN0b21lciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpbGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmVkIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnRGVsZXRlIHRoaXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXQgdGhpcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnRkFRIEFyZWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnRkFRIEFyZWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRkFRIERlbGV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRkFRIEVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUSBQcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZpZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGaWVsZDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGdWxsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3Rvcnkgb2YgdGhpcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGFuIEZBUSBiYXNlZCBUaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGFuIEZBUSBiYXNlZCBUaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0xhbmd1YWdlIE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGNpaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ05ldyBGQVEgQXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIGh0ZXkgZ2V0IHB1Ymxpc2hlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdQcmludCB0aGlzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ1B1YmxpYyBGQVEgUHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdQdWJsaWMgRkFRIFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ1B1YmxpYyBGQVEgc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ1B1YmxpYyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTZWFyY2ggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdTaG93IEZBUSBwYXRoIHllcy9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1N5bXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnVGV4dCBPbmx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuYWwgKGN1c3RvbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdwdWJsaWMgKHB1YmxpYyknOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgY2xhdmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnU2UgcmVxdWllcmUgdW5hIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb2JhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgY2F0ZWdvcsOtYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdCb3JyYXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ0FjZXB0YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQcOxYWRpciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3LDrWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQb3IgZmF2b3IsIHNlbGVjY2lvbmUgYWwgbWVub3MgdW4gZ3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIHF1ZSBwdWVkZW4gYWNjZWRlciBhIGxvcyBhcnTDrWN1bG9zIGRlIGVzdGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2UgbW9zdHJhcsOhIGNvbW8gY29tZW50YXJpbyBlbiBlbCBleHBsb3JhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBjYXRlZ29yw61hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIGNhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgbG9zIHNpZ3VpZW50ZXMgYXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIHN1YmNhdGVnb3LDrWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGUgYXJ0w61jdWxvIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIHLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0VzdGEgcGVybWl0aWRvIGxvcyBjb21vZGluZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBhdmFuemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0w61jdWxvcyBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpYWwgZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZW4gZWwgRGlhcmlvIGRlIGxhcyBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIElkaW9tYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1V0aWxpemEgZXN0YSBmdW5jacOzbiBzaSBkZXNlYXMgdHJhYmFqYXIgY29uIHZhcmlvcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdCb3JyYXIgSWRpb21hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGUgaWRpb21hLiDCoUVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIGRlIGxhcyBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgZXN0YSBzaWVuZG8gdXNhZG8gcG9yIGxvcyBzaWd1aWVudGVzIEFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQWp1c3RlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnTDrWN1bG9zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBkYXRvcyBkZSBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1BhbGFicmEgY2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdGEgKGVqbS4gSWd1YWwgYSAxMCBvIG1heW9yIGEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1B1bnTDumEgKEVqbS4gSWd1YWwgYSAyNSUgbyBtYXlvciBhIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdBcHJvYmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVbHRpbW8gY2FtYmlvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGUgQXJ0w61jdWxvcyBGQVEgKGFudGVzIC8gZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydGljdWxvIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIEFjdHVhbGl6YWNpw7NuIGRlbCBBcnRpY3VsbyBGQVEgKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydGljdWxvIEZBUSAoZW50cmUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGNvbXBsZXRvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlY2Npw7NuIGRlIHBlcmZpbCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1NpbiBhanVzdGVzIGRlIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OtZmljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnRWouIElndWFsIGEgMTAgbyBtYXlvciBhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdQdW50dWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnU2luIGFqdXN0ZXMgZGUgcHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ1B1bnR1YWNpw7NuIGVzcGVjw61maWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZWptOiBJZ3VhbCBhIDI1JSBvIG1heW9yIHF1ZSA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdUaWVtcG8gZGUgQ3JlYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnVGllbXBvIGRlIEFjdHVhbGl6YWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1B1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ8KhTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8uIFNlYSBlbCBwcmltZXJvIGVuIHZhbG9yYXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEZXNjYXJnYXIgQXJjaGl2byBhZGp1bnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsaW5rcyBlbiBsb3Mgc2lndWllbnRlcyBibG9xdWVzIGRlIGRlc2NyaXBjacOzbiwgcG9kcmlhIG5lY2VzaXRhciBwcmVzaW9uYXIgbGEgdGVjbGFzIEN0cmwsIENtZCBvIFNoaWZ0IG1pZW50cmFzIHByZXNpb25hIGVsIGxpbmsgKGRlcGVuZGUgZGVsIGJyb3dzZXIgeSBlbCBTTyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv1F1w6kgdGFuIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yIGTDqW5vcyBzdSBjYWxpZmljYWNpw7NuIHkgYXl1ZGUgYSBtZWpvcmFyIGxhIGJhc2UgZGUgZGF0b3MgZGUgbGFzIEZBUS4gwqFHcmFjaWFzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3BvY28gw7p0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbXV5IMO6dGlsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBZ3JlZ2FyIHRpdHVsbyBkZSBGQVEgYSBhc3VudG8gZGVsIGFydMOtY3Vsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcnRhciBUZXh0byBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJ0YXIgRkFRIGNvbXBsZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnRhciBFbmxhY2UgYSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdJbnNlcnRhciBGQVEgY29tcGxldGFzIHkgZW5sYWNlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdFc3RvIHBvZHLDrWEgc2VyIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiByZWN1cnNvcyDDunRpbGVzIHBhcmEgZWwgYXN1bnRvIHkgdGV4dG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdFc2NyaWJhIHVuIGFzdW50byBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gdm90b3MuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHB1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gY2FsaWZpY2FjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnU8OzbG8gQXJ0w61jdWxvcyBGQVEgY3JlYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdTw7NsbyBBcnTDrWN1bG9zIEZBUSBjcmVhZG9zIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ8K/UGVyZmlsIGRlIELDunNxdWVkYSBjb21vIFBsYW50aWxsYT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIEFydMOtY3Vsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0J1c2NhciBhcnTDrWN1bG9zIGNvbiBsYSBwYWxhYnJhIGNsYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1DDumJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWb2x2ZXIgYSBleHBsb3JhZG9yIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnwqFOZWNlc2l0YXMgZWwgcGVybWlzbyBydyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICfCoU5vIHNlIGVuY29udHJhcm9uIGNhdGVnb3LDrWFzIGRvbmRlIGVsIHVzdWFyaW8gdGVuZ2EgcGVybWlzb3MgZGUgbGVjdHVyYSAvIGVzY3JpdHVyYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTm8gc2UgaGEgZW5jb250cmFkbyBuaW5nw7puIGlkaW9tYSBwcmVkZXRlcm1pbmFkbyB5IG5vIHNlIHB1ZWRlIGNyZWFyIHVubyBudWV2by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICfCoVNlIG5lY2VzaXRhIGxhIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ8KhTGFzIGNhdGVnb3LDrWFzIGRlYmVuIHRlbmVyIHVuIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfCoUVzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgbGEgY2F0ZWdvcsOtYSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnwqFDYXRlZ29yw61hIGRlIGxhcyBGQVEgYWN0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfCoUNhdGVnb3LDrWEgZGUgbGFzIEZBUSBhw7FhZGlkYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnwqFObyB0aWVuZSBwZXJtaXNvIHBhcmEgZXN0YSBjYXRlZ29yw61hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgYXJ0w61jdWxvIGRlIGxhcyBGQVEgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0xhIENhdGVnb3J5SUQgJXMgbm8gZXMgdmFsaWRhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIHlhIHF1ZSBubyBzZSBoYSBkYWRvIHVuIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0b3JpYWwgZGUgbGFzIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0RpYXJpbyBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1NlIHJlcXVpZXJlIGxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnwqFMYSBvcGNpw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lY2VzaXRhIHNlciB1bmEgcmVmZXJlbmNpYSBhIHVuIEhBU0ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgbGEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBwYXJhIGxhIHZpc3RhICIxJXMiISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIHVuIExhbmd1YWdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ8KhRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ8KhRXN0ZSBpZGlvbWEgeWEgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfCoUlkaW9tYSBkZSBsYXMgRkFRIGFjdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnwqFJZGlvbWEgZGUgbGFzIEZBUSBhw7FhZGlkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnVWx0aW1hIGFjdHVhbGl6YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBEaW7DoW1pY29zIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBpbmRpY2EgZWwgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ05vIHB1ZWRlIGNhcmdhcnNlIGVsIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoVNpbiByZXN1bHRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnVWx0aW1vIGNhbWJpbyBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIGNyZWFkbyAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0FydGljdWxvIGRlIGxhcyBGQVEgY3JlYWRvIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdNYXlvciBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ01heW9yIHF1ZSBpZ3VhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ01lbm9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3IgcXVlIGlndWFsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnU2UgbmVjZXNpdGEgRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfCoUdyYWNpYXMgcG9yIHN1IHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnwqFVc3RlZCB5YSBoYSB2b3RhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnwqFObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ3VuYSBwdW50dWFjacOzbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnwqFFbCBtZWNhbmlzbW8gZGUgdm90YWNpw7NuIG5vIGVzdMOhIGhhYmlsaXRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnwqFMYSB0YXNhIGRlIHZvdGFjacOzbiBubyBlc3TDoSBkZWZpbmlkYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgZWwgYXJ0w61jdWxvIGRlIGxhcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcmVhZG8gZW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnU2UgbmVjZXNpdGEgSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0w61jdWxvcyBkZSBsYXMgRkFRICAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBkZSBsYXMgRkFRICAobW9kaWZpY2Fkb3MgcmVjaWVudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBkZSBsYXMgRkFRIChUb3AgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ0VsIFRpcG8gZGViZSBzZXIgTGFzdENyZWF0ZSBMYXN0Q2hhbmdlIG8gVG9wMTAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICfCoU5vIHNlIHB1ZWRlIGNyZWFyIGFyY2hpdm8gUlNTISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoVGV4dG8gY29tcGxldG8gRkFRKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ2xpZW50ZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gQ2xpZW50ZSAoVGV4dG8gY29tcGxldG8gRkFRKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQdWJsaWNvICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUHVibGljbyAoVGV4dG8gY29tcGxldG8gRkFRKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICfCoVJlcXVpZXJlIHZhbG9yYWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnwqFFc3RlIGFydMOtY3VsbyBlc3RhIHZhY8OtbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0w61jdWxvcyBkZSBsYXMgRkFRIGNyZWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0w61jdWxvcyBkZSBsYXMgRkFRIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgbG9zIGFydMOtY3Vsb3MgZGUgbGFzIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICdUaXBvIGRlIENvbnRlbmlkbyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhw7FhZGlyIGVubGFjZXMgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVFJTLiBMYSBzZWd1bmRhIHBvc2liaWxpZGFkIGVzIGluc2VydGFyIGVsIGVubGFjZSBhIGxhIGltYWdlbi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0HDsWFkaXIgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUaWVtcG8gZGUgdmlkYSBkZSBsYSBjYWNow6kgcGFyYSBsb3MgZWxlbWVudG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGxhcyBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdWaXN0YSBkZXRhbGxhZGEgZGUgbGFzIEZBUSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYXIgRkFRIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTsO6bWVybyBkZSBkZWNpbWFsZXMgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21icmUgcHJlZGV0ZXJtaW5hZG8gZGUgbGEgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgw7puaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBwb3IgZGVmZWN0byBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIHBvciBkZWZlY3RvIGRlIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIHBvciBvbWlzacOzbiBwYXJhIGVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgcGFyYSBsYSBpbnRlcmZheiBww7pibGljYS4gRWwgcGFyw6FtZXRybyAiQWN0aW9uIiBzZSB1c2EgZW4gbG9zICJzY3JpcHRzIiBkZWwgc2lzdGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgYWNjaW9uZXMgZG9uZGUgZXN0w6EgZGlzcG9uaWJsZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIGFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCB0w610dWxvIGRlIEZBUSBkZWJlIHNlciBjb25jYXRlbmFkbyBhbCBhc3VudG8gZGVsIGFydMOtY3Vsby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIERpYXJpbyBkZSBsYXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBwcmV2aWEgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuIGxpc3RhZG8gZGUgRkFRcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RFZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBGQVEgcXVlIHNlIHVzYXLDoSBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogTG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyBtw6FzIHJlY2llbnRlcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIEZBUSBhIG1vc3RyYXIgcG9yIG9taXNpw7NuIHBhcmEgbGEgcGFudGFsbGEgZGUgYnVzcXVlZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgaW5mb3JtYWNpw7NuIGEgc2VyIGluc2VydGFkYSBlbiB1biB0aWNrZXQgYmFzYWRvIGVuIHVuYSBGQVEuICJGQVEgQ29tcGxldGEiIGluY2x1eWUgdGV4dG8sIGFyY2hpdm9zIGFkanVudG9zIGUgaW3DoWdlbmVzIGVuIGxpbmVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwuICJMaW1pdGUiIGVzIGVsIG7Dum1lcm8gZGUgZW50cmFkYSBtb3N0cmFkYXMgcG9yIGRlZmVjdG8uICJHcnVwbyIgZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqLiBHcnVwbzogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmZWN0byIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlcyBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyBuZWNlc2l0YSBoYWJpbGl0YXJsbyBtYW51YWxtZW50ZS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmUgZG9uZGUgc2Vyw6EgbW9zdHJhZG8gZWwgbGluayBcJ0luc2VydGFyIEZBUVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljacOzbiBkZWwgY2FtcG8gwqt0ZXh0byBsaWJyZcK7IHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdCb3JyYXIgZXN0ZSBhcnTDrWN1bG8gZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBBZ3JlZ2FyIEZBUSBlbiBsYSBpbnRlcmZheiBkZSBBZ2VudGUuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDA9RGVzaGFiaWxpdGFkbywgMT1IYWJpbGl0YWRvLCAyPUhhYmlsaXRhZG8geSByZXF1ZXJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBFZGl0YXIgRkFRIGVuIGxhIGludGVyZmF6IGRlIEFnZW50ZS4gQ29uZmlndXJhY2nDs24gcG9zaWJsZTogMD1EZXNoYWJpbGl0YWRvLCAxPUhhYmlsaXRhZG8sIDI9SGFiaWxpdGFkbyB5IHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBSZXN1bWVuIEZBUSBlbiBsYSBpbnRlcmZheiBkZSBDbGllbnRlLiBDb25maWd1cmFjacOzbiBwb3NpYmxlOiAwPURlc2hhYmlsaXRhZG8sIDE9SGFiaWxpdGFkbywgMj1IYWJpbGl0YWRvIHkgcmVxdWVyaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBSZXN1bWVuIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4gQ29uZmlndXJhY2nDs24gcG9zaWJsZTogMD1EZXNoYWJpbGl0YWRvLCAxPUhhYmlsaXRhZG8sIDI9SGFiaWxpdGFkbyB5IHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gcGFudGFsbGEgZGUgSW1wcmVzacOzbiBGQVEgZW4gbGEgaW50ZXJmYXogZGUgQWdlbnRlLiBDb25maWd1cmFjacOzbiBwb3NpYmxlOiAwID0gRGVzaGFiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIHBhbnRhbGxhIGRlIEltcHJlc2nDs24gRkFRIGVuIGxhIGludGVyZmF6IGRlIENsaWVudGUuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDAgPSBEZXNoYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIHBhbnRhbGxhIGRlIEltcHJlc2nDs24gRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLiBDb25maWd1cmFjacOzbiBwb3NpYmxlOiAwID0gRGVzaGFiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gcGFudGFsbGEgZGUgQnVzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlIEFnZW50ZS4gQ29uZmlndXJhY2nDs24gcG9zaWJsZTogMCA9IERlc2hhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyPUhhYmlsaXRhZG8geSBtb3N0cmFkbyBwb3Igb21pc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gcGFudGFsbGEgZGUgQnVzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlIENsaWVudGUuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDAgPSBEZXNoYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMj1IYWJpbGl0YWRvIHkgbW9zdHJhZG8gcG9yIG9taXNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBCdXNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDAgPSBEZXNoYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMj1IYWJpbGl0YWRvIHkgbW9zdHJhZG8gcG9yIG9taXNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gcGFudGFsbGEgZGUgUmVzdW1lbiBmb3JtYXRvIGNoaWNvIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZSBBZ2VudGUuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDAgPSBEZXNoYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBab29tIEZBUSBlbiBsYSBpbnRlcmZheiBkZSBBZ2VudGUuIENvbmZpZ3VyYWNpw7NuIHBvc2libGU6IDAgPSBEZXNoYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBwYW50YWxsYSBkZSBab29tIEZBUSBlbiBsYSBpbnRlcmZheiBkZSBDbGllbnRlLiBDb25maWd1cmFjacOzbiBwb3NpYmxlOiAwID0gRGVzaGFiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIHBhbnRhbGxhIGRlIFpvb20gRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLiBDb25maWd1cmFjacOzbiBwb3NpYmxlOiAwID0gRGVzaGFiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZGl0YXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgbcO6bHRpcGxlcyBpZGlvbWFzIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBlbCBtZWNhbmlzbW8gZGUgdm90YWNpw7NuIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXhwbG9yYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICfDgXJlYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnw4FyZWEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ0JvcnJhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0VkaXRhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMw61taXRlIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgZWwgRGlhcmlvIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMw61taXRlIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgZWwgRGlhcmlvIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnQ2FtcG80JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0NhbXBvNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0ZBUSBjb21wbGV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSBkZSBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgZWwgbm9tYnJlIGRlIGNhZGEgY2FtcG8gZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBkb25kZSBkZWJlcsOhIHNlciBtb3N0cmFkYSBsYSBiw7pzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0RpYXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGRlIG5vbWJyZXMgZGUgZmlsYXMgcGFyYSBsYXMgY3VhbGVzIGxhIGZ1bmNpb25hbGlkYWQgZGUgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZXN0w6EgaGFiaWxpdGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZGUgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZhY2UgZGUgYWdlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZGUgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZhY2UgZGUgY2xpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkZSB0aXBvcyBkZSBlc3RhZG8gcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIGRlIGxhcyAgRkFRIGEgbW9zdHJhciBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGUgYWdlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlIGNsaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBhZ2VudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBjbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBidXNjYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlIGxvcyB0w610dWxvcyBlbiB1biBhcnTDrWN1bG8gRkFRIHF1ZSBzZXJhIG1vc3RyYWRvIGVuIGVsIERpYXJpbyBkZSBsYXMgRkFRLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgam91cm5hbCBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTnVldm8gYXJ0w61jdWxvIGVuIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTG9zIG51ZXZvcyBhcnTDrWN1bG9zIEZBUSByZXF1aWVyZW4gYXByb2JhY2nDs24gYW50ZXMgZGUgcHVibGljYXJzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY2FtYmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY3JlYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnRmlsdHJvIGRlIHNhbGlkYSBwYXJhIGFncmVnYXIgSmF2YS1TY3JpcHQgYSBsYSBwYW50YWxsYSBDdXN0b21lclRpY2tldE1lc3NhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgcGVxdWXDsWEgZGVsIERpYXJpbyBkZSBsYXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIEZBUSBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBwdWJsaWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ1Zpc3RhIGRldGFsbGFkYSBkZSBsYXMgRkFRIFB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYXIgRkFRIFB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBQdWJsaWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdQb25kZXJhY2nDs24gcGFyYSBsYSB2b3RhY2nDs24uIExhIGNsYXZlIGRlYmUgZXhwcmVzYXJzZSBlbiBwb3JjZW50YWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQsO6c3F1ZWRhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIHByZWRldGVybWluYWRhIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQWdlbnRGQVFab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBtw6F4aW1hIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQ3VzdG9tZXJGQVFab29tICh5IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7NuIMKrSW5zZXJ0YXIgZW5sYWNlIGEgRkFRwrsgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIHRleHRvIHkgZW5sYWNlIGEgRkFRwrsgLyDCq0luc2VydGFyIEZBUSBjb21wbGV0byB5IGVubGFjZcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgQXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byBGQVHCuyAvIMKrSW5zZXJ0YXIgRkFRIGNvbXBsZXRvwrsgZW4gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmFyIGVsZW1lbnRvcyBubyB2w6FsaWRvcyBlbiBlbCByZXN1bHRhZG8gZGVsIEV4cGxvcmFkb3IgZGUgbGFzIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnwr9Nb3N0cmFyIGxvcyBlbGVtZW50b3MgZGUgbGFzIHN1YmNhdGVnb3LDrWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGFjdHVhbGl6YWRvcyBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGNyZWFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1Y2nDs24gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTw61udG9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdTb2xvIHRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ0lkaW9tYXMgcG9yIGRlZmVjdG8gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgcmVsYWNpb25hZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIHBhcmEgdW5hIEZBUSwgcG9yIGVqZW1wbG8gRkFRIywgS0IjLCBNaUZBUSMuIEVsIHZhbG9yIHByZWRldGVybWluYWRvIGVzIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0FydMOtY3VsbyBkZSBsYSBiYXJyYSBkZSBoZXJyYW1pZW50YXMgcGFyYSB1biBhY2Nlc28gZGlyZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhZ2VudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3DDumJsaWNvIChww7pibGljbyknOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgQ2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZSByZXF1aWVyZSB1bmEgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvYmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjYXRlZ29yw61hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQcOxYWRpciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0JvcnJhciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkaXRhciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcsOtYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNjaW9uZSBhbCBtZW5vcyB1biBncnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGFnZW50ZXMgcXVlIHB1ZWRlbiBhY2NlZGVyIGEgbG9zIGFydMOtY3Vsb3MgZGUgZXN0YSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZSBtb3N0cmFyw6EgY29tbyBjb21lbnRhcmlvIGVuIGVsIGV4cGxvcmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0YSBjYXRlZ29yw61hLiBFc3TDoSBzaWVuZG8gdXNhZGEgcG9yIGFsIG1lbm9zIHVuIGFydMOtY3VsbyBGQVEgeS9vIGVzIHBhZHJlIGRlIGFsIG1lbm9zIG90cmEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSBlc3TDoSBzaWVuZG8gdXNhZGEgcG9yIGxvcyBzaWd1aWVudGVzIGFydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSBlcyBwYWRyZSBkZSBsYXMgc2lndWllbnRlcyBzdWJjYXRlZ29yw61hcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgYXJ0w61jdWxvIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgUsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnU2UgcGVybWl0ZW4gY29tb2RpbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQXZhbnphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gc3ViY2F0ZWdvcsOtYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpYSBkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBkYXRvcyBlbiBsYSBCaXTDoWNvcmEgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIElkaW9tYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3RhIGZ1bmNpb25hbGlkYWQgc2kgZGVzZWEgdHJhYmFqYXIgY29uIG11bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdCb3JyYXIgSWRpb21hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfCv1NlZ3VybyBxdWUgZGVzZWEgYm9ycmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIEVzdMOhIHNpZW5kbyB1c2FkbyBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIGVzdGEgc2llbmRvIHVzYWRvIHBvciBsb3Mgc2lndWllbnRlcyBBcnTDrWN1bG9zIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FqdXN0ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0w61jdWxvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gZGF0b3MgZGUgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdQYWxhYnJhIGNsYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdWb3RvIChlLmcuIElndWFsIGEgMTAgbyBNYXlvclF1ZSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnVmFsb3JhY2nDs24gKGUuZy4gSWd1YWwgYSAyNSUgbyBNYXlvclF1ZSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXByb2JhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBNb2RpZmljYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChhbnRlcy9kZXNwdcOpcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGllbXBvIGRlIE1vZGlmaWNhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGVudHJlKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdUZXh0byBjb21wbGV0byBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnU2VsZWNjacOzbiBkZSBwZXJmaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1NpbiBjb25maWd1cmFjacOzbiBkZSB2b3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OzaWZpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2UuZy4gSWd1YWwgYSAxMCBvIE1heW9yUXVlIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdWYWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnU2luIGNvbmZpZ3VyYWNpw7NuIGRlIHZhbG9yYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdWYWxvcmFjacOzbiBlc3BlY8OtZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2UuZy4gSWd1YWwgYSAyNSUgbyBNYXlvciBRdWUgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnVGllbXBvIGRlIGNyZWFjacOzbiBkZWwgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1RpZW1wbyBkZSBtb2RpZmljYWNpw7NuIGRlbCBhcnTDrWN1bG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkZSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90by4gU2VhIGVsIHByaW1lcm8gZW4gdmFsb3JhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0Rlc2NhcmdhciBBZGp1bnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsb3MgZW5sYWNlcyBkZSBsYXMgc2lndWllbnRlcyBkZXNjcmlwY2lvbmVzLCBwdWVkZSBuZWNlc2l0YXIgcHJlc2lvbmFyIGxhIHRlY2xhIEN0cmwsIENtZCBvIFNoaWZ0IG1pZW50cmFzIGhhY2UgY2xpYyBlbiBlbCBlbmxhY2UgKGRlcGVuZGllbmRvIGRlbCBuYXZlZ2Fkb3IgeSBTTyBxdWUgZXN0w6kgdXRpbGl6YW5kbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv0PDs21vIGRlIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yLCBkw6lub3Mgc3UgcHVudHVhY2nDs24geSBheXVkZSBhIG1lam9yYXIgbGEgYmFzZSBkZSBkYXRvcyBkZSBGQVEuIEdyYWNpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG9jbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdXkgw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FncmVnYXIgZWwgdMOtdHVsbyBkZWwgRkFRIGFsIGFzdW50byBkZWwgYXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VydGFyIFRleHRvIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcnRhciBGQVEgQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciB0ZXh0byB5IEVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgRkFRIENvbXBsZXRvICYgRW5sYWNlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdFc3RvIHBvZHLDrWEgc2VyIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiByZWN1cnNvcyDDunRpbGVzIHBhcmEgZWwgYXN1bnRvIHkgdGV4dG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdFc2NyaWJhIHVuIGFzdW50byBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnw5puaWNhbWVudGUgYXJ0w61jdWxvcyBGQVEgY29uIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY2Npb25lcyBkZSB2YWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdTb2xvIGFydMOtY3Vsb3MgRkFRIGNvbiB2YWxvcmFjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnw7puaWNhbWVudGUgYXJ0w61jdWxvcyBGQVEgY3JlYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfDmm5pY2FtZW50ZSBhcnTDrWN1bG9zIEZBUSBjcmVhZG9zIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ8K/UGVyZmlsIGRlIGLDunNxdWVkYSBjb21vIHBsYW50aWxsYT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIEFydMOtY3Vsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0J1c2NhciBhcnTDrWN1bG9zIGNvbiBsYSBwYWxhYnJhIGNsYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1DDumJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdSZWdyZXNhciBhbCBFeHBsb3JhZG9yIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnUmVxdWlyZSBwZXJtaXNvIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnTm8gc2UgZW5jb250cmFyb24gY2F0ZWdvcsOtYXMgZG9uZGUgZWwgdXN1YXJpbyB0ZW5nYSBwZXJtaXNvcyBkZSBsZWN0dXJhL2VzY3JpdHVyYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTm8gc2UgZW5jb250csOzIGVsIGlkaW9tYSBwb3Igb21pc2nDs24geSBubyBzZSBwdWVkZSBjcmVhciB1bm8gbnVldm8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnU2UgbmVjZXNpdGEgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnwqFMYXMgY2F0ZWdvcsOtYXMgZGViZSB0ZW5lciBub21icmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgeWEgZXhpc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnw4lzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdObyBmdWUgcG9zaWJsZSBib3JyYXIgbGEgY2F0ZWdvcsOtYSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZGEgY2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0HDsWFkaWRhIGNhdGVnb3LDrWEgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIGhhIGRhZG8gSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ1VzdGVkIG5vIHRpZW5lIHBlcm1pc29zIHBhcmEgZXN0YSBjYXRlZ29yw61hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdObyBmdWUgcG9zaWJsZSBlbGltaW5hciBlbCBhcnTDrWN1bG8gRkFRICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdFbCBDYXRlZ29yeUlEICVzIGVzIGludsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCB5YSBxdWUgbm8gc2UgaGEgZGFkbyB1biBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdG9yaWFsIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0JpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnU2UgcmVxdWllcmUgbGEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfCoUxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVjZXNpdGEgc2VyIHVuYSByZWZlcmVuY2lhIGEgdW4gSEFTSCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBsYSBvcGNpw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgdmlzdGEgIjElcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIGhhIGRhZG8gdW4gTGFuZ3VhZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRWwgbm9tYnJlIGVzIGltcHJlc2NpbmRpYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGUgaWRpb21hIHlhIGV4aXN0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTm8gc2UgaGEgcG9kaWRvIGVsaW1pbmFyIGVsIGlkaW9tYSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQWN0dWFsaXphZG8gaWRpb21hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0HDsWFkaWRvIGlkaW9tYSBkZSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnw5psdGltYSBBY3R1YWxpemFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdDYW1wb3MgRGluw6FtaWNvcyBwYXJhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTm8gcHVlZGUgY2FyZ2Fyc2UgZWwgTGFuZ3VhZ2VPYmplY3QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1NpbiBSZXN1bHRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gQ2FtYmlvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdUaWVtcG8gZGUgQ3JlYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ01heW9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnTWF5b3IgbyBpZ3VhbCBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTWVub3IgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdNZW5vciBvIGlndWFsIHF1ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdTZSBuZWNlc2l0YSBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ8KhR3JhY2lhcyBwb3Igc3Ugdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfCoVVzdGVkIHlhIGhhIHZvdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdFbCBtZWNhbmlzbW8gZGUgdm90YWNpw7NuIG5vIGVzdMOhIGhhYmlsaXRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnTGEgcHJvcG9yY2nDs24gZGUgdm90YWNpw7NuIG5vIGVzdMOhIGRlZmluaWRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBlbCBhcnTDrWN1bG8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnQ3JlYWRvIGVucnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICdTZSBuZWNlc2l0YSBJdGVtSUQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobnVldm9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0w61jdWxvcyBGQVEgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydMOtY3Vsb3MgRkFRIChUb3AgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ0VsIFRpcG8gZGViZSBzZXIgTGFzdENyZWF0ZSBMYXN0Q2hhbmdlIG8gVG9wMTAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdObyBzZSBwdWVkZSBjcmVhciBlbCBhcmNoaXZvIFJTUyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcxJXMgKEZBUVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnMSVzIC0gQ2xpZW50ZSAoRkFRVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUMO6YmxpY28gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnMSVzIC0gUMO6YmxpY28gKEZBUVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ8KhUmVxdWllcmUgdmFsb3JhY2nDs24hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdFc3RlIGFydMOtY3VsbyBlc3RhIHZhY2nDsyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0w61jdWxvcyBGQVEgY3JlYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnTDrWN1bG9zIEZBUSBtb2RpZmljYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ1RpcG8gZGUgQ29udGVuaWRvJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdww7pibGljbyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0ZpbHRybyBwYXJhIGVsIEhUTUwgcmVzdWx0YW50ZSBwYXJhIGHDsWFkaXIgZW5sYWNlcyBhIHVuYSBjYWRlbmEgZGV0ZXJtaW5hZGEuIEVsIGVsZW1lbnRvIEltYWdlbiBjb250ZW1wbGEgZG9zIHRpcG9zIGRlIHJlZ2lzdHJvcy4gRWwgcHJpbWVybyBlcyBlbCBub21icmUgZGUgdW5hIGltYWdlbiAocG9yIGVqZW1wbG8gZmFxLnBuZykuIEVuIGVzdGUgY2FzbyBzZSB1dGlsaXphcsOhIGxhIHJ1dGEgZGUgaW3DoWdlbmVzIGRlIE9UUlMuIExhIHNlZ3VuZGEgcG9zaWJpbGlkYWQgZXMgaW5zZXJ0YXIgZWwgZW5sYWNlIGEgbGEgaW1hZ2VuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUaWVtcG8gZGUgdmlkYSBkZSBsYSBjYWNow6kgcGFyYSBsb3MgZWxlbWVudG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGxhcyBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIGRlbCBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdEZXRhbGxlIEZBUSBkZWwgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdCw7pzcXVlZGEgRkFRIGRlbCBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIGRlbCBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTsO6bWVybyBkZSBkZWNpbWFsZXMgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21icmUgcHJlZGV0ZXJtaW5hZG8gZGUgbGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnSWRpb21hIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBtb2RvIGlkaW9tYSDDum5pY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnTcOheGltbyB0YW1hw7FvIHBvciBkZWZlY3RvIGEgbW9zdHJhciBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIHBvciBkZWZlY3RvIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmUgc2kgZWwgdMOtdHVsbyBkZWwgRkFRIGRlYmUgZXN0YXIgY29uY2F0ZW5hZG8gYWwgYXN1bnRvIGRlbCBhcnTDrWN1bG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBnZW5lcmFsIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBiaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHByZXZpYSBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW4gbGlzdGFkbyBkZSBGQVFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnREVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIEZBUSBxdWUgc2UgdXNhcsOhIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBMb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyBtw6FzIHJlY2llbnRlcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgRkFRIG1vc3RyYWRvIHBvciBkZWZlY3RvIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBpbmZvcm1hY2nDs24gYSBpbnNlcnRhciBlbiB1biBGQVEgYmFzYWRvIGVuIHVuIHRpY2tldC4gIkZBUSBjb21wbGV0byIgaW5jbHV5ZSB0ZXh0bywgYWRqdW50b3MgZSBpbcOhZ2VuZXMgaW5jcnVzdGFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGFyw6FtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwuICJMaW1pdCIgZGVmaW5lIGVsIG7Dum1lcm8gZGUgZW50cmFkYXMgbW9zdHJhZGFzIHBvciBkZWZlY3RvLiAiR3JvdXAiIHNlIHVzYSBwYXJhIHJlc3RyaW5naXIgZWwgYWNjZXNvIGFsIHBsdWdpbiAocG9yIGVqZW1wbG8sIEdydXBvOiBhZG1pbjtncnVwbzE7Z3J1cG8yOykuICJEZWZhdWx0IiBpbmRpY2Egc2kgZWwgcGx1Z2luIGVzdMOhIGhhYmlsaXRhZG8gcG9yIGRlZmVjdG8gbyBzaSBlbCB1c3VhcmlvIG5lY2VzaXRhIGhhYmlsaXRhcmxvIG1hbnVhbG1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYml0w6Fjb3JhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmlyIGRvbmRlIHNlcsOhIG1vc3RyYWRvIGVsIGVubGFjZSBcJ0luc2VydGFyIEZBUVwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpw7NuIGRlbCBjYW1wbyDCq3RleHRvIGxpYnJlwrsgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0JvcnJhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGFncmVnYXIgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gVmFsb3JlcyBwb3NpYmxlcyAwPURlc2FjdGl2YWRvLCAxPUFjdGl2YWRvLCAyPUFjdGl2YWRvIHkgcmVxdWVyaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGVkaXRhciBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBWYWxvcmVzIHBvc2libGVzIDA9RGVzYWN0aXZhZG8sIDE9QWN0aXZhZG8sIDI9QWN0aXZhZG8geSByZXF1ZXJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIHJlc3VtZW4gZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkbywgMj1BY3RpdmFkbyB5IHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIHJlc3VtZW4gZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkbywgMj1BY3RpdmFkbyB5IHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGltcHJpbWlyIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkbywgMj1BY3RpdmFkbyB5IHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGltcHJpbWlyIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBWYWxvcmVzIHBvc2libGVzIDA9RGVzYWN0aXZhZG8sIDE9QWN0aXZhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBGQVEgaW1wcmltaXIgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBGQVEgYnVzY2FyIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkbywgMj1BY3RpdmFkbyB5IG1vc3RyYWRvIGNvbW8gcHJlZGVmaW5pZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGJ1c2NhciBkZSBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4gVmFsb3JlcyBwb3NpYmxlcyAwPURlc2FjdGl2YWRvLCAxPUFjdGl2YWRvLCAyPUFjdGl2YWRvIHkgbW9zdHJhZG8gY29tbyBwcmVkZWZpbmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgRkFRIGJ1c2NhciBkZSBsYSBpbnRlcmZheiBww7pibGljYS4gVmFsb3JlcyBwb3NpYmxlcyAwPURlc2FjdGl2YWRvLCAxPUFjdGl2YWRvLCAyPUFjdGl2YWRvIHkgbW9zdHJhZG8gY29tbyBwcmVkZWZpbmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIEZBUSBkZSBmb3JtYXRvIHBlcXVlw7FvIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBGQVEgZGUgYWNlcmNhbWllbnRvIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIFZhbG9yZXMgcG9zaWJsZXMgMD1EZXNhY3RpdmFkbywgMT1BY3RpdmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBGQVEgIGRlIGFjZXJjYW1pZW50byBkZSBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4gVmFsb3JlcyBwb3NpYmxlcyAwPURlc2FjdGl2YWRvLCAxPUFjdGl2YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBGQVEgZGUgYWNlcmNhbWllbnRvIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLiBWYWxvcmVzIHBvc2libGVzIDA9RGVzYWN0aXZhZG8sIDE9QWN0aXZhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZGl0YXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgbcO6bHRpcGxlcyBpZGlvbWFzIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBlbCBtZWNhbmlzbW8gZGUgdm90YWNpw7NuIGVuIGVsIG3Ds2R1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXhwbG9yYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdBcmVhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfDgXJlYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnQm9ycmFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMw61taXRlIGRlIEZBUSBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGxhIEJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0zDrW1pdGUgZGUgRkFRIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdFbmNhbWluYWRvciBwYXJhIGxhIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnQ2FtcG80JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0NhbXBvNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0ZBUSBDb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIGRlIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBlbCBub21icmUgZGUgY2FkYSBjYW1wbyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIGRvbmRlIHNlIGRlYmUgbW9zdHJhciBsYSBiw7pzcXVlZGEgcsOhcGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0JpdMOhY29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGRlIG5vbWJyZXMgZGUgZmlsYXMgcGFyYSBsYXMgY3VhbGVzIGxhIGZ1bmNpb25hbGlkYWQgZGUgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZXN0w6EgaGFiaWxpdGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgbG9zIHRpcG9zIGRlIGVzdGFkb3MgcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGxvcyB0aXBvcyBkZSBlc3RhZG9zIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGxvcyB0aXBvcyBkZSBlc3RhZG9zIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZWwgdMOtdHVsbyBlbiB1biBhcnTDrWN1bG8gIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBFeHBsb3JhZG9yIGRlIEZBUXMgcXVlIHNlIG11ZXN0cmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGFsIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgQnVzY2Fkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgQnVzY2Fkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZWwgdMOtdHVsbyBlbiB1biBhcnTDrWN1bG8gIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBCdXNjYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGFsIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIERpYXJpbyBkZSBOYXZlZ2FjacOzbiBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVsIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBsYSBiw7pzcXVlZGEgY29ydGEgZGUgbGFzIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ051ZXZvIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTG9zIG51ZXZvcyBhcnTDrWN1bG9zIEZBUSByZXF1aWVyZW4gYXByb2JhY2nDs24gYW50ZXMgZGUgcHVibGljYXJzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY2FtYmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY3JlYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnRmlsdHJvIGRlIHNhbGlkYSBwYXJhIGFncmVnYXIgSmF2YS1TY3JpcHQgYSBsYSBwYW50YWxsYSBDdXN0b21lclRpY2tldE1lc3NhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgcGVxdWXDsWEgZGUgbGEgYml0w6Fjb3JhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIEZBUSkgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBGQVEgcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgUMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ0RldGFsbGUgRkFRIFDDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ0LDunNxdWVkYSBGQVEgUMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdGQVEgUMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGxhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdQb25kZXJhY2nDs24gcGFyYSBsYSB2b3RhY2nDs24uIExhIGNsYXZlIGRlYmUgZXhwcmVzYXJzZSBlbiBwb3JjZW50YWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQsO6c3F1ZWRhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIHByZWRldGVybWluYWRhIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQWdlbnRGQVFab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBtw6F4aW1hIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQ3VzdG9tZXJGQVFab29tICh5IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7NuIMKrSW5zZXJ0YXIgZW5sYWNlIGEgRkFRwrsgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgcMO6YmxpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdG9uZXMgIkluc2VydGFyIFRleHRvIHkgRW5sYWNlIGRlIGxhIEZBUSIgLyAiSW5zZXJ0YXIgRkFRIENvbXBsZXRhIHkgRW5sYWNlIiBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxhcyBlbnRyYWRhcyBww7pibGljYXMgZGUgbGFzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgZWwgYm90w7NuICJJbnNlcnRhciBUZXh0byBkZSBsYSBGQVEiIC8gIkludGVydGFyIEZBUSBDb21wbGV0YSIgZW4gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ8K/TW9zdHJhciBjb250ZW5pZG8gSFRNTCBlbiBsb3MgYXJ0w61jdWxvcyBGQVE/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfCv01vc3RyYXIgbGEgcnV0YSBkZSBsYSBGQVE/IHPDrS9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmFyIGVudHJhZGFzIGludsOhbGlkYXMgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIEV4cGxvcmFkb3IgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfCv01vc3RyYXIgbG9zIGVsZW1lbnRvcyBkZSBsYXMgc3ViY2F0ZWdvcsOtYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIMO6bHRpbW9zIGFydMOtY3Vsb3MgYWN0dWFsaXphZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIMO6bHRpbW9zIGFydMOtY3Vsb3MgY3JlYWRvcyBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3MgYXJ0w61jdWxvcyBUb3AgMTAgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsYSB2b3RhY2nDs24gZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGVubGF6YXIgYSB1biBhcnTDrWN1bG8gRkFRIGNvbiBvdHJvIG9iamV0byBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBlc2EgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgYm9ycmFyIHVuIGFydMOtY3VsbyBGQVEgZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSByZXRyb2NlZGVyIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHVjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU8OtbnRvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnU29sbyBUZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdJZGlvbWFzIHBvciBkZWZlY3RvIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHJlbGFjaW9uYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBGQVEsIHBvciBlamVtcGxvIEZBUSMsIEtCIywgTWlGQVEjLiBGQVEjIGVzIGxhIG9wY2nDs24gcG9yIG9taXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrRkFRwrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq05vcm1hbMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0VzdGUgYWp1c3RlIGRlZmluZSBxdWUgdW4gb2JqZXRvIMKrRkFRwrsgcHVlZGUgZW5sYXphcnNlIGNvbiBvdHJvcyBvYmpldG9zIMKrVGlja2V0wrsgdXRpbGl6YW5kbyBlbCB0aXBvIGRlIGVubGFjZSDCq1BhcmVudENoaWxkwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDdWVycG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQXN1bnRvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0VsZW1lbnRvIGRlIGxhIGJhcnJhIGRlIGhlcnJhbWllbnRhcyBwYXJhIHVuIGF0YWpvIChzaG9ydGN1dCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfYqtin24zbjNivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn2KrYp9uM24zYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9iy24zYsSDZhdis2YXZiNi52YfigIzbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfYr9ixIEV4cGxvcmVyINio2Ycg2LXZiNix2Kog24zaqSDZhdiq2YYg2KrZiNi224zYrduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2K7ZiNin2YfZhtivINi02K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ9iz2YjYp9io2YInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ9iq2YbYuNuM2YXYp9iqINmF2YHYp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsduM2YYg2KrYutuM24zYsSDYqNmHINmI2LPbjNmE2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn2KLYsdinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfYr9ix24zYp9mB2Kog2b7bjNmI2LPYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn2KfYsiDYsdin24wg2LTZhdinINiz2b7Yp9iz2q/Ystin2LHbjNmFISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9i02YXYpyDZgtio2YTYpyDYsdin24wg2K/Yp9iv2YfigIzYp9uM2K8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn2KfZhdiq24zYp9iyINix2Kcg2KfZhtiq2K7Yp9ioINmG2qnYsdiv2YfigIzYp9uM2K8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYp9uM2KzYp9ivINi02K/ZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9in2K7YqNin2LEgRkFRICjYrNiv24zYr9inINiq2LrbjNuM2LEg24zYp9mB2KrZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAn2KfYrtio2KfYsSBGQVEgKNux27Ag2KrYp9uMINio2LHYqtixKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn2KLYrtix24zZhiDYp9mC2YTYp9mFINin24zYrNin2K8g2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9ii2K7YsduM2YYg2KfZgtmE2KfZhSDYqti52LHbjNmBINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn2KjYp9mE2KfYqtix24zZhiDbsduwINmC2YTZhSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9mG2YjYtNiq2Ycg2KzYr9uM2K8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMaXPDpMOkIFVLSyBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdIYWt1c2FuYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgb24gcGFrb2xsaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdIeXbDpGtzeW50w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVUtLIGthdGVnb3Jpb2lkZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnTGlzw6TDpCBrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnUG9pc3RhIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0xpc8Okw6Qga2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdNdW9ra2FhIGthdGVnb3JpYWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdBbGFrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdWYWxpdHNlIGFpbmFraW4geWtzaSBvaWtldXNyeWhtw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdBZ2VudHRpcnlobcOkdCwgam9pbGxhIG9uIHDDpMOkc3kgYXJ0aWtrZWxlaWhpbiB0w6Rzc8OkIGthdGVnb3JpYXNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnTsOkeXRldMOkw6RuIGtvbW1lbnR0aW5hIFNlbGFpbWVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIHTDpG3DpG4ga2F0ZWdvcmlhbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdFdCB2b2kgcG9pc3RhYSB0w6R0w6Qga2F0ZWdvcmlhYSEgU2Ugc2lzw6RsdMOkw6Qgam9rbyBhcnRpa2tlbGVpdGEgdGFpIHNlIG9uIHRvaXNlbiBrYXRlZ29yaWFuIGlzw6RudMOka2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1NldXJhYXZhdCBhcnRpa2tlbGl0IGt1dWx1dmF0IHTDpGjDpG4ga2F0ZWdvcmlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnTsOkbcOkIGthdGVnb3JpYXQgb3ZhdCB0w6Rtw6RuIGthdGVnb3JpYW4gYWxha2F0ZWdvcmlvaXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBhcnRpa2tlbGluPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdVS0snOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1NlbGFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdQaWthaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ01vbmlwdW9saW5lbiBoYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdBbGFrYXRlZ29yaWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlra2VsaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdFaSBhbGFrYXRlZ29yaW9pdGEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpYTonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1VLSyBraWVsdGVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1BvaXN0YSBraWVsaSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdMaXPDpMOkIGtpZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdNdW9ra2FhIGtpZWx0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0hhbHVhdGtvIHZhcm1hc3RpIHBvaXN0YWEgdMOkbcOkbiBraWVsZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0V0IHZvaSBwb2lzdGFhIHTDpHTDpCBraWVsdMOkLiBBaW5ha2luIHlrc2kgYXJ0aWtrZWxpIGvDpHl0dMOkw6QgdMOkdMOkIGtpZWx0w6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnU2V1cmFhdmF0IGFydGlra2VsaXQga8OkeXR0w6R2w6R0IHTDpHTDpCBraWVsdMOkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlra2VsZWl0YSBwZXIgc2l2dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdZaHTDpMOkbiBhcnRpa2tlbGlhIGVpIGzDtnl0eW55dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdIYWt1c2FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdVS0sgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ1VLSyB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQXJ2b3N0ZWx1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJy8gNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ8OEw6RuZXN0eWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnRWkgw6TDpG5pw6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdFaSBhbm5ldHR1amEgw6TDpG5pw6QhIMOEw6RuZXN0w6QgdMOkdMOkIGFydGlra2VsaWEgZW5zaW1tw6Rpc2Vuw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYXRhYSBsaWl0ZXRpZWRvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnS3VpbmthIGh5w7ZkeWxsaW5lbiB0w6Rtw6QgYXJ0aWtrZWxpIG9saT8gQXJ2b3N0ZWxlIGFydGlra2VsaSwgam90dGEgdm9pbW1lIGtlaGl0dMOkw6QgVUtLLXRpZXRva2FudGFhbW1lLiBLaWl0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaHnDtmR5dMO2bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdoecO2ZHlsbGluZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdMaXPDpMOkIFVLSyB0ZWtzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0xpc8Okw6QgVUtLIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTGlzw6TDpCBVS0sgdGVrc3RpIGphIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnWWh0w6TDpG4gYXJ0aWtrZWxpYSBlaSBsw7Z5dHlueXQuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnSGFlIGFydGlra2VsZWlzdGEgKGVzaW0uICJNYXR0aSoiIHRhaSAiTWVpaypuZW4iKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdFdHNpIGFydGlra2VsZWphIGhha3VzYW5hbGxhJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ0p1bGtpbmVuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWFsbGEgdHVsZWUgb2xsYSBuaW1pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnVMOkbcOkIGthdGVnb3JpYSBvbiBqbyBvbGVtYXNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnS2F0ZWdvcmlhIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnS2F0ZWdvcmlhIGxpc8OkdHR5ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnVUtLIGFpa2Fqw6RyamVzdHlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05pbWkgb24gcGFrb2xsaW5lbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdUw6Rtw6Qga2llbGkgb24gam8gb2xlbWFzc2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdLaWVsaSBww6Rpdml0ZXR0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0tpZWxpIGxpc8OkdHR5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdVS0sgbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnS2lpdG9zIGFydm9zdGVsdXN0YXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ09sZXQgam8gYXJ2b3N0ZWxsdXQgdMOkbcOkbiBhcnRpa2tlbGluISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0VpIHZhbGl0dHVhIGFydmlvdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ1R1bG9zdGEgYXJ0aWtrZWxpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtrZWxpICh1dWRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlra2VsaSAocMOkaXZpdGV0dHkgw6Rza2V0dMOkaW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlra2VsaXQgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1ZpaW1la3NpIGp1bGthaXN0dXQgYXJ0aWtrZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdWaWltZWtzaSBww6Rpdml0ZXR5dCBhcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWtrZWxpdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ3Npc8OkaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ3Vsa29pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ2p1bGtpbmVuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWFoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1NlbGFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0Fpa2Fqw6RyamVzdHlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdLaWVsdGVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ1V1c2kgYXJ0aWtrZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1R1bG9zdGEgYXJ0aWtrZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1JhdGthaXN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAndWxrb2luZW4gKGFzaWFra2FhdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ3Npc8OkaW5lbiAoYWdlbnRpdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBam91dGVyIEFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnTW90cy1jbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ1VuZSBjYXTDqWdvcmllIGVzdCByZXF1aXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXV0b3Jpc2F0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gQ2F0w6lnb3JpZXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0Fqb3V0IENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnU3VwcHJpbWVyIENhdMOpZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBam91dCBDYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0ZXIgQ2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1NvdXMgY2F0w6lnb3JpZSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ01lcmNpIGRlIFPDqWxlY3Rpb25uZXIgYXUgbW9pbnMgdW4gZ3JvdXBlIGRlIHBlcm1pc3Npb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcm91cGVzIGRcJ2FnZW50cyBwb3V2YW50IGFjY8OpZGVyIGF1eCBhcnRpY2xlcyBkZSBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2VyYSBhZmZpY2jDqSBjb21tZSB1biBjb21tZW50YWlyZSBkYW5zIGxcJ0V4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldHRlIGNhdMOpZ29yaWUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1ZvdXMgbmUgcG91dmV6IHBhcyBzdXBwcmltZXIgY2V0dGUgY2F0w6lnb3JpZS4gRWxsZSBlc3QgdXRpbGlzw6llIGRhbnMgYXUgbW9pbnMgdW4gYXJ0aWNsZSBkZSBGQVEgZXQvb3UgZXN0IHBhcmVudGUgZFwnYXUgbW9pbnMgdW5lIGF1dHJlIGNhdMOpZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnQ2V0dGUgY2F0w6lnb3JpZSBlc3QgdXRpbGlzw6llIGRhbnMgbGVzIGFydGljbGVzIGRlIEZBUSBzdWl2YW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdDZXR0ZSBjYXTDqWdvcmllIGVzdCBwYXJlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgYXJ0aWNsZSBkZSBGQVEgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ05hdmlnYXRldXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSByYXBpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0xlcyBtw6l0YWNhcmFjdMOocmVzIHNvbnQgYXV0b3Jpc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgQXZhbmPDqWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1NvdXMtY2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWNsZXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnUGFzIGRlIHNvdXMtY2F0w6lnb3JpZSB0cm91dsOpZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlxdWUgZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnUGFzIGRlIGpvdXJuYWwgZGUgZG9ubsOpZXMgRkFRIHRyb3V2w6knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBMYW5ndWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1V0aWxpc2VyIGNldHRlIGZvbmN0aW9uIGFmaW4gZGUgdHJhdmFpbGxlciBhdmVjIGRlIG11bHRpcGxlcyBsYW5ndWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTdXBwcmltZXIgbGEgbGFuZ3VlICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGVyIGxhIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldHRlIGxhbmd1ZSA/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ1ZvdXMgbmUgcG91dmV6IHBhcyBzdXBwcmltZXIgY2V0dGUgbGFuZ3VlLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnQ2V0dGUgbGFuZ3VlIGVzdCB1dGlsaXPDqWUgZGFucyBsZXMgYXJ0aWNsZXMgRkFRIHN1aXZhbnRzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUsOpZ2xhZ2VzIGRlIENvbnRleHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGljbGVzIEZBUSBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdwYXMgZGUgZG9ubsOpZXMgRkFRIHRyb3V2w6llcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdNb3QtY2zDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90ZSAoZXguIEVnYWxBIDEwIG91IFN1cGVyaWV1ckEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ05vdGUgKGV4LiBFZ2FsQSAyNSUgb3UgU3VwZXJpZXVyQSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXBwcm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24gcGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBDcsOpYXRpb24gQXJ0aWNsZSAoYXZhbnQvYXByw6hzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRlIENyw6lhdGlvbiBBcnRpY2xlIChww6lyaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdEYXRlIE1vZGlmaWNhdGlvbiBBcnRpY2xlIChhdmFudC9hcHLDqHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGUgTW9kaWZpY2F0aW9uIEFydGljbGUgKHDDqXJpb2RlKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdUZXh0ZSBJbnTDqWdyYWwgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnUmVjaGVyY2hlIGRhbnMgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnU8OpbGVjdGlvbiBkdSBwcm9maWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1BhcyBkZSBwYXJhbcOodHJlcyBkZSB2b3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnVm90ZSBzcMOpY2lmaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdwLmV4LiDDqWdhbCDDoCAxMCBvdSBzdXDDqXJpZXVyIMOgIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdOb3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnUGFzIGRlIHLDqWdsYWdlIGRlIGNvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ0NvdGUgc3DDqWNpZmlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdwLmV4IMOpZ2FsIMOgIDI1JSBvdSBzdXDDqXJpZXVyIMOgIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0hldXJlIGRlIGNyw6lhdGlvbiBkdSB0aWNrZXQgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEFydGljbGUgRGF0ZSBkZSBtb2RpZmljYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0NvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdzdXIgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0F1Y3VuIHZvdGUgdHJvdXbDqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ1NveWV6IGxlIHByZW1pZXIgw6Agbm90ZXIgY2V0ZSBhcnRpY2xlIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnVMOpbMOpY2hhcmdlciBGaWNoaWVyIEpvaW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUG91ciBvdXZyaXIgbGVzIGxpZW5zIGRhbnMgbGVzIGJsb2NzIGRlIGRlc2NyaXB0aW9uIHN1aXZhbnRlcywgdm91cyBwb3VycmlleiBhdm9pciBiZXNvaW4gZFwnYXBwdXllciBzdXIgQ3RybCBvdSBDbWQgb3UgTWFqIHRvdXQgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gKGVuIGZvbmN0aW9uIGRlIHZvdHJlIG5hdmlnYXRldXIgZXQgT1MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0NldCBBcnRpY2xlIMOpdGFpdC1pbCB1dGlsZT8gTWVyY2kgZGUgZG9ubmVyIHVuZSBub3RlIGV0IGRlIHBhcnRpY2lwZXIgw6AgbFwnYW3DqWxpb3JhdGlvbiBkZSBsYSBiYXNlIGRlIGRvbm7DqWVzLiBNZXJjaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwZXUgdXRpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAndHLDqHMgdXRpbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0Fqb3V0ZXIgdW4gdGl0cmUgZGUgbGEgRkFRIGF1IHN1amV0IGRlIGxcJ2FydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zw6lyZXIgVGV4dGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zw6lyZXIgdG91dGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc8OpcmVyIExpZW4gZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc8OpcmVyIFRleHRlICYgTGllbiBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zw6lyZXIgdG91dCBUZXh0ZSBldCBMaWVuIGRhbnMgbGEgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnUGFzIGRcJ2FydGljbGUgZGUgRkFRIHRyb3V2w6kuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUmVjaGVyY2hlIHRleHRlIGludMOpZ3JhbGUgZGFucyBsZXMgYXJ0aWNsZXMgRkFRIChleC4gIkVtaWxpZSoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSB2b3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdVbmlxdWVtZW50IGxlcyBhcnRpY2xlcyBkZSBGQVEgYXZlYyBkZXMgdm90ZXMuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljdGlvbnMgZGUgY290ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdVbmlxdWVtZW50IGxlcyBhcnRpY2xlcyBkZSBGQVEgYXZlYyBjb3RlIC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnVW5pcXVlbWVudCBsZXMgbm91dmVhdXggYXJ0aWNsZXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1VuaXF1ZW1lbnQgbGVzIGFydGljbGVzIGRlIEZBUSBjcsOpw6lzIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ01vZMOobGUgZGUgcmVjaGVyY2hlIGVuIG1vZMOobGUgPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ051bcOpcm8gZFwnQXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1JlY2hlcmNoZSBkZXMgQXJ0aWNsZXMgYXZlYyBtb3QgY2zDqSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQdWJsaWMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1JldmVuaXIgYXUgTmF2aWdhdGV1ciBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbmUgY2F0w6lnb3JpZSBkZXZyYWl0IGF2b2lyIHVuIG5vbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXhpc3RlIGTDqWrDoCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIG1pc2Ugw6Agam91ciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdMOpZ29yaWUgZGUgRkFRIGFqb3V0w6llISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnSm91cm5hbCBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTGUgbm9tIGVzdCByZXF1aXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnQ2V0dGUgbGFuZ3VlIGV4aXN0ZSBkw6lqw6AhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMYW5ndWUgZGUgRkFRIG1pc2Ugw6Agam91ciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0xhbmd1ZSBkZSBGQVEgYWpvdXTDqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnRGVybmnDqHJlIG1pc2Ugw6Agam91cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdDaGFtcHMgZHluYW1pcXVlcyBkZSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQXVjdW4gcsOpc3VsdGF0ICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ051bcOpcm8gZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnTWVyY2kgcG91ciB2b3RyZSB2b3RlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdWb3VzIGF2ZXogZMOpasOgIHZvdMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdQYXMgZGUgc8OpbGVjdGlvbiAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1lciBBcnRpY2xlIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAobm91dmVsbGVzIHF1ZXN0aW9ucyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoZGVybmllcnMgY2hhbmdlbWVudHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGljbGVzIGRlIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnQgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUHVibGlxdWUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQ2V0IGFydGljbGUgZXN0IHZpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuacOocmVzIHF1ZXN0aW9ucyBjcsOpw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuacOocmVzIHF1ZXN0aW9ucyBtb2RpZmnDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGVzIHF1ZXN0aW9ucyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpYyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBam91dGVyIHVuIGFydGljbGUgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ291bGV1ciBDU1MgcG91ciBsZSByw6lzdWx0YXQgZHUgdm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnRHVyw6llIGRlIHZhbGlkaXTDqSBkdSBDYWNoZSBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0ltcHJlc3Npb24gRkFRIENsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWm9vbSBGQVEgQ2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ1JlY2hlcmNoZSBGQVEgQ2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIENsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1Bvc2l0aW9ubmVtZW50IGTDqWNpbWFsIGRlcyByw6lzdWx0YXRzIGR1IHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbSBkZSBjYXTDqWdvcmllIHBhciBkw6lmYXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdMYW5ndWUgcGFyIGTDqWZhdXQgcG91ciBsZXMgYXJ0aWNsZXMgZGUgbGEgRkFRIGVuIG1vZGUgbGFuZ2FnZSB1bmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1RhaWxsZSBtYXhpbXVtIHBhciBkw6lmYXV0IGRlcyB0aXRyZXMgZGFucyB1biBhcnRpY2xlIGRlIGxhIEZBUSDDoCBtb250cmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcml0w6kgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcyBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFdGF0IHBhciBkw6lmYXV0IGRcJ3VuZSBlbnRyw6llIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0V0YXQgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcyBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1R5cGUgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcyBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnU3VwcHJpbWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0V4cGxvcmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ1pvbmUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ1pvbmUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ1N1cHByaW1lciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdJbXByZXNzaW9uIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yaXF1ZSBkZSBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgbGFuZ3Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3V2ZWwgQXJ0aWNsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTGVzIG5vdXZlYXV4IGFydGljbGVzIEZBUSBkb2l2ZW50IMOqdHJlIGFwcHJvdXbDqXMgYXZhbnQgZFwnw6p0cmUgcHVibGnDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByaW1lciBGQVEgcHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdab29tIEZBUSBwdWJsaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnUmVjaGVyY2hlIEZBUSBwdWJsaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdGQVEgUHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUmVjaGVyY2hlIGRhbnMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdBZmZpY2hlciBsXCdhcnRpY2xlIGRlIEZBUSBlbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdBZmZpY2hlciBsZSBjaGVtaW4gRkFRIG91aS9ub24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBZmZpY2hlciBsZXMgw6lsw6ltZW50cyBkZXMgc291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHV0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdMO0bWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnVGV4dGUgdW5pcXVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfDiWzDqW1lbnQgYmFycmUgw6Agb3V0aWxzIHBvdXIgcmFjY291cmNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuZSAoY2xpZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuZSAob3DDqXJhdGV1ciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncHVibGljIChwdWJsaWMpJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdHeUlLIGJlamVneXrDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS3VsY3NzemF2YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdFZ3kga2F0ZWfDs3JpYSBrw7Z0ZWxlesWRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0rDs3bDoWhhZ3nDoXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR3lJSyBrYXRlZ8OzcmlhIGtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT0snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ0Ega8O2dmV0a2V6xZEgYWxrYXRlZ8OzcmnDoWphOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1bDoWxhc3N6b24gbGVnYWzDoWJiIGVneSBqb2dvc3VsdHPDoWcgY3NvcG9ydG90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnw5xneWludMOpesWRY3NvcG9ydG9rLCBhbWVseWVrIGhvenrDoWbDqXJuZWsgYSBiZWplZ3l6w6lzZWtoZXogZWJiZW4gYSBrYXRlZ8OzcmnDoWJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0EgYsO2bmfDqXN6xZFiZW4gbWVnamVneXrDqXNrw6ludCBmb2cgbWVnamVsZW5uaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEga2F0ZWfDs3Jpw6F0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ05lbSB0w7Zyw7ZsaGV0aSBlenQgYSBrYXRlZ8OzcmnDoXQuIExlZ2Fsw6FiYiBlZ3kgR3lJSyBiZWplZ3l6w6lzYmVuIGhhc3puw6FsasOhayDDqXMvdmFneSBsZWdhbMOhYmIgZWd5IG3DoXNpayBrYXRlZ8OzcmlhIHN6w7xsxZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0V6dCBhIGthdGVnw7NyacOhdCBhIGvDtnZldGtlesWRIEd5SUsgYmVqZWd5esOpc2VrbsOpbCBoYXN6bsOhbGrDoWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXogYSBrYXRlZ8OzcmlhIGEga8O2dmV0a2V6xZEgYWxrYXRlZ8OzcmnDoWsgc3rDvGzFkWplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEgR3lJSyBiZWplZ3l6w6lzdD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnR3lJSyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnR3lJSyBiw7ZuZ8Opc3rFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdHeW9ycyBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnSGVseWV0dGVzw610xZEga2FyYWt0ZXJlayBlbmdlZMOpbHllemV0dGVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdTcGVjacOhbGlzIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdBbGthdGVnw7NyacOhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgYWxrYXRlZ8OzcmnDoWsuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdFbMWRem3DqW55ZWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTmVtIHRhbMOhbGhhdMOzayBHeUlLIG5hcGzDsyBhZGF0b2suJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0d5SUsgbnllbHZrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdBa2tvciBoYXN6bsOhbGphIGV6dCBhIHN6b2xnw6FsdGF0w6FzdCwgaGEgdMO2YmIgbnllbHZ2ZWwgc3plcmV0bmUgZG9sZ296bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICclcyBueWVsdiB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTnllbHYgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdOeWVsdiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIG55ZWx2ZXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ05lbSB0w7Zyw7ZsaGV0aSBlenQgYSBueWVsdmV0LiBMZWdhbMOhYmIgZWd5IEd5SUsgYmVqZWd5esOpc2JlbiBoYXN6bsOhbGrDoWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXp0IGEgbnllbHZldCBhIGvDtnZldGtlesWRIEd5SUsgYmVqZWd5esOpc2VrbsOpbCBoYXN6bsOhbGrDoWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdLw7ZybnllemV0IGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0d5SUsgYmVqZWd5esOpc2VrIG9sZGFsYW5rw6ludCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIEd5SUsgYWRhdG9rLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdLdWxjc3N6w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1N6YXZhesOhcyAocMOpbGTDoXVsIEVneWVubMWRIDEwIHZhZ3kgTmFneW9iYiBtaW50IDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfDiXJ0w6lrZWzDqXMgKHDDqWxkw6F1bCBFZ3llbmzFkSAyNSUgdmFneSBOYWd5b2JiIG1pbnQgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0rDs3bDoWhhZ3lvdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVXRvbGrDoXJhIG3Ds2Rvc8OtdG90dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdHeUlLIGJlamVneXrDqXMgbMOpdHJlaG96w6FzaSBpZGVqZSAoZWzFkXR0L3V0w6FuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdHeUlLIGJlamVneXrDqXMgbMOpdHJlaG96w6FzaSBpZGVqZSAoa8O2esO2dHQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnR3lJSyBiZWplZ3l6w6lzIG3Ds2Rvc8OtdMOhc2kgaWRlamUgKGVsxZF0dC91dMOhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnR3lJSyBiZWplZ3l6w6lzIG3Ds2Rvc8OtdMOhc2kgaWRlamUgKGvDtnrDtnR0KSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdHeUlLIHN6YWJhZC1zemF2YXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdHeUlLIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUHJvZmlsIGtpdsOhbGFzenTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1N6YXZhesOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTmluY3NlbmVrIHN6YXZhesOhc2kgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdBZG90dCBzemF2YXphdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ3DDqWxkw6F1bCBFZ3llbmzFkSAxMCB2YWd5IE5hZ3lvYmIgbWludCA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnw4lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdOaW5jc2VuZWsgw6lydMOpa2Vsw6lzaSBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnQWRvdHQgw6lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAncMOpbGTDoXVsIEVneWVubMWRIDI1JSB2YWd5IE5hZ3lvYmIgbWludCA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdHeUlLIGJlamVneXrDqXMgbMOpdHJlaG96w6FzaSBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0d5SUsgYmVqZWd5esOpcyBtw7Nkb3PDrXTDoXNpIGlkZWplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0d5SUsgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfDiXJ0w6lrZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdheiA1LWLFkWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTemF2YXphdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgc3phdmF6YXRvayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgc3phdmF6YXRvayEgTGVneWVuIGF6IGVsc8WRLCBha2kgw6lydMOpa2VsaSBlenQgYSBHeUlLIGJlamVneXrDqXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTWVsbMOpa2xldCBsZXTDtmx0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0Ega8O2dmV0a2V6xZEgbGXDrXLDoXNpIGJsb2trb2tiYW4gbMOpdsWRIGhpdmF0a296w6Fzb2sgbWVnbnlpdMOhc8OhaG96IGxlaGV0c8OpZ2VzLCBob2d5IGxlIGtlbGwgbnlvbW5pYSBhIEN0cmwgdmFneSBDbWQgdmFneSBTaGlmdCBiaWxsZW50ecWxdCwgbWlrw7Z6YmVuIGEgaGl2YXRrb3rDoXNyYSBrYXR0aW50IChhIGLDtm5nw6lzesWRasOpdMWRbCDDqXMgb3BlcsOhY2nDs3MgcmVuZHN6ZXLDqXTFkWwgZsO8Z2fFkWVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdNZW5ueWlyZSB2b2x0IGhhc3pub3MgZXogYSBiZWplZ3l6w6lzPyBLw6lyasO8ayBrw7xsZGplIGVsIG5la8O8bmsgYXogw6lydMOpa2Vsw6lzw6l0IGEgR3lJSyBhZGF0YsOhemlzIHTDtmvDqWxldGVzw610w6lzw6loZXouIEvDtnN6w7ZuasO8ayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduZW0gaGFzem5vcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICduYWd5b24gaGFzem5vcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnR3lJSyBjw61tIGhvenrDoWFkw6FzYSBhIGJlamVneXrDqXMgdMOhcmd5w6Fob3onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnR3lJSyBzesO2dmVnIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1RlbGplcyBHeUlLIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0d5SUsgaGl2YXRrb3rDoXMgYmVzesO6csOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0d5SUsgc3rDtnZlZyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1RlbGplcyBHeUlLIMOpcyBoaXZhdGtvesOhcyBiZXN6w7pyw6FzYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgR3lJSyBiZWplZ3l6w6lzZWsuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRXogaGFzem5vcyBsZWhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTmVtIHRhbMOhbGhhdMOzayBoYXN6bm9zIGVyxZFmb3Jyw6Fzb2sgYSB0w6FyZ3lob3ogw6lzIGEgc3rDtnZlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ8ONcmpvbiBiZSBlZ3kgdMOhcmd5YXQgdmFneSBzesO2dmVnZXQgYSBoYXN6bm9zIGVyxZFmb3Jyw6Fzb2sgbGlzdMOhasOhbmFrIGxla8OpcsOpc8OpaGV6Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnU3phYmFkLXN6YXZhcyBrZXJlc8OpcyBhIEd5SUsgYmVqZWd5esOpc2VrYmVuIChww6lsZMOhdWwg4oCeSipub3PigJ0gdmFneSDigJ5Lb3Yq4oCdKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1N6YXZhesOhc2kga29ybMOhdG96w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0NzYWsgYSBzemF2YXphdG9ra2FsIHJlbmRlbGtlesWRIEd5SUsgYmVqZWd5esOpc2Vr4oCmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnw4lydMOpa2Vsw6lzIGtvcmzDoXRvesOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0NzYWsgYXogw6lydMOpa2Vsw6lzc2VsIHJlbmRlbGtlesWRIEd5SUsgYmVqZWd5esOpc2Vr4oCmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdDc2FrIGF6IGVra29yIGzDqXRyZWhvem90dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdDc2FrIGF6IGUga8O2esO2dHQgbMOpdHJlaG96b3R0IEd5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ0tlcmVzw6lzaSBwcm9maWwgc2FibG9ua8OpbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQmVqZWd5esOpc3N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQmVqZWd5esOpc2VrIGtlcmVzw6lzZSBrdWxjc3N6YXZha2thbCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdOeWlsdsOhbm9zJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWaXNzemEgYSBHeUlLIGLDtm5nw6lzesWRaMO2eic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnw41yw6FzLCBvbHZhc8OhcyBqb2dvc3VsdHPDoWdyYSB2YW4gc3rDvGtzw6lnZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgb2x5YW4ga2F0ZWfDs3Jpw6FrLCBhaG9sIGEgZmVsaGFzem7DoWzDs25hayDDrXLDoXNpL29sdmFzw6FzaSBqb2dvc3VsdHPDoWdhaSB2YW5uYWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ05lbSB0YWzDoWxoYXTDsyBhbGFww6lydGVsbWV6ZXR0IG55ZWx2LCDDqXMgbmVtIGxlaGV0IMO6amF0IGzDqXRyZWhvem5pLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ0thdGVnw7NyaWEtYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VneSBrYXRlZ8OzcmnDoW5hayByZW5kZWxrZXpuaWUga2VsbCBuw6l2dmVsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXogYSBrYXRlZ8OzcmlhIG3DoXIgbMOpdGV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFeiBhIGthdGVnw7NyaWEgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ05lbSBzaWtlcsO8bHQgYSh6KSAlcyBrYXRlZ8OzcmlhIHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnR3lJSyBrYXRlZ8OzcmlhIGZyaXNzw610dmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdHeUlLIGthdGVnw7NyaWEgaG96esOhYWR2YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgZWxlbWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGthdGVnw7NyacOhaG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdOZW0gc2lrZXLDvGx0IGEoeikgJXMgR3lJSyBiZWplZ3l6w6lzIHTDtnJsw6lzZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQSh6KSAlcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIMOpcnbDqW55dGVsZW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG1pdmVsIG5pbmNzIGVsZW1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0d5SUsgZWzFkXptw6lueWVrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnR3lJSyBuYXBsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnQSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIHN6w7xrc8OpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0EgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcga29uZmlndXLDoWNpw7NzIGJlw6FsbMOtdMOhc25hayBraXZvbmF0LWhpdmF0a296w6FzbmFrIGtlbGwgbGVubmllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05lbSB0YWzDoWxoYXTDsyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIGEoeikg4oCeJXPigJ0gbsOpemV0aGV6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBueWVsdmF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0EgbsOpdiBrw7Z0ZWxlesWRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0V6IGEgbnllbHYgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmVtIHNpa2Vyw7xsdCBhKHopICVzIG55ZWx2IHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnR3lJSyBueWVsdiBmcmlzc8OtdHZlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnR3lJSyBueWVsdiBob3p6w6FhZHZhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdVdG9sc8OzIGZyaXNzw610w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0d5SUsgZGluYW1pa3VzIG1lesWRayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgJXMgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTmVtIGxlaGV0IGJldMO2bHRlbmkgYSBueWVsdm9iamVrdHVtb3QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05pbmNzIHRhbMOhbGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnR3lJSyBzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdHeUlLIGVsZW0gbMOpdHJlaG96w6FzaSBpZGVqZSAoZWzFkXR0L3V0w6FuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdHeUlLIGVsZW0gbMOpdHJlaG96w6FzaSBpZGVqZSAoa8O2esO2dHQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnR3lJSyBlbGVtIG3Ds2Rvc8OtdMOhc2kgaWRlamUgKGVsxZF0dC91dMOhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnR3lJSyBlbGVtIG3Ds2Rvc8OtdMOhc2kgaWRlamUgKGvDtnrDtnR0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdFZ3llbmzFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdOYWd5b2JiIG1pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ05hZ3lvYmIgbWludCB2YWd5IGVneWVubMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ0tpc2ViYiBtaW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdLaXNlYmIgbWludCB2YWd5IGVneWVubMWRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ0bDoWpsYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0vDtnN6w7ZuasO8ayBhIHN6YXZhemF0w6F0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ03DoXIgc3phdmF6b3R0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05pbmNzIMOpcnTDqWtlbMOpcyBraXbDoWxhc3p0dmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0Egc3phdmF6w6FzaSBtZWNoYW5pem11cyBuaW5jcyBlbmdlZMOpbHllenZlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ0Egc3phdmF6w6Fzw6lydMOpa2Vsw6lzIG5pbmNzIG1lZ2hhdMOhcm96dmEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0d5SUsgYmVqZWd5esOpcyBueW9tdGF0w6FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0zDqXRyZWhvenZhIGV6ZWsga8O2esO2dHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnRWxlbWF6b25vc8OtdMOzIHN6w7xrc8OpZ2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnR3lJSyBiZWplZ3l6w6lzZWsgKMO6am9ubmFuIGzDqXRyZWhvenZhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnR3lJSyBiZWplZ3l6w6lzZWsgKGxlZ3V0w7NiYiBtw7Nkb3PDrXR2YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnR3lJSyBiZWplZ3l6w6lzZWsgKGxlZ2pvYmIgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgdMOtcHVzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ0EgdMOtcHVzIGNzYWsgTGFzdENyZWF0ZSwgTGFzdENoYW5nZSB2YWd5IFRvcDEwIGxlaGV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ05lbSBsZWhldCBsw6l0cmVob3puaSBSU1MtZsOhamx0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoR3lJSyBzemFiYWQtc3phdmFzKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gw7xneWbDqWwgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIMO8Z3lmw6lsIChHeUlLIHN6YWJhZC1zemF2YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIG55aWx2w6Fub3MgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBueWlsdsOhbm9zIChHeUlLIHN6YWJhZC1zemF2YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ8OJcnTDqWtlbMOpcyBzesO8a3PDqWdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0V6IGEgYmVqZWd5esOpcyDDvHJlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGVndXTDs2JiIGzDqXRyZWhvem90dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMZWd1dMOzYmIgZnJpc3PDrXRldHQgR3lJSyBiZWplZ3l6w6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ0xlZ2pvYmIgMTAgR3lJSyBiZWplZ3l6w6lzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ1RhcnRhbG9tdMOtcHVzJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdiZWxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdrw7xsc8WRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ255aWx2w6Fub3MnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdFZ3kgc3rFsXLFkSBhIEhUTUwga2ltZW5ldGhleiwgaG9neSBoaXZhdGtvesOhc29rYXQgYWRqb24gZWd5IG1lZ2hhdMOhcm96b3R0IHN6w7Z2ZWcgbcO2Z8OpLiBBeiBJbWFnZSBlbGVtIGvDqXRmw6lsZSBiZW1lbmV0ZXQgZm9nYWQuIEF6IGVsc8WRIGEga8OpcCBuZXZlIChww6lsZMOhdWwgZmFxLnBuZykuIEViYmVuIGF6IGVzZXRiZW4gYXogT1RSUyBrw6lwZWsgw7p0dm9uYWxhIGxlc3ogZmVsaGFzem7DoWx2YS4gQSBtw6Fzb2RpayBsZWhldMWRc8OpZyBhIGvDqXByZSBtdXRhdMOzIGhpdmF0a296w6FzIGJlc3rDunLDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdHeUlLIGJlamVneXrDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIHN6w61uIGEgc3phdmF6w6FzIGVyZWRtw6luecOpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnR3lvcnPDrXTDs3TDoXIgaWTFkSBhIEd5SUsgZWxlbWVrIGVsaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWfDs3JpYWtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICfDnGd5ZsOpbCBHeUlLIG55b210YXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ8OcZ3lmw6lsIEd5SUsgbmFnecOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICfDnGd5ZsOpbCBHeUlLIGtlcmVzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnw5xneWbDqWwgR3lJSy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnw5xneWbDqWwgR3lJSyBrYXBjc29sw7Nkw7MgYmVqZWd5esOpc2VrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBIHN6YXZhesOhc2kgZXJlZG3DqW55IHRpemVkZXNqZWd5ZWluZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnQWxhcMOpcnRlbG1lemV0dCBrYXRlZ8OzcmlhbsOpdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0EgR3lJSyBiZWplZ3l6w6lzZWsgYWxhcMOpcnRlbG1lemV0dCBueWVsdmUgZWd5bnllbHbFsSBtw7NkYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdFZ3kgR3lJSyBiZWplZ3l6w6lzYmVuIG1lZ2plbGVuw610ZW5kxZEgY8OtbWVrIGFsYXDDqXJ0ZWxtZXpldHQgbGVnbmFneW9iYiBtw6lyZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdBIGplZ3llayBhbGFww6lydGVsbWV6ZXR0IHByaW9yaXTDoXNhIGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc8OhbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0EgR3lJSyBiZWplZ3l6w6lzIGFsYXDDqXJ0ZWxtZXpldHQgw6FsbGFwb3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQSBqZWd5ZWsgYWxhcMOpcnRlbG1lemV0dCDDoWxsYXBvdGEgYSBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6Fzw6Fuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdBIGplZ3llayBhbGFww6lydGVsbWV6ZXR0IHTDrXB1c2EgYSBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6Fzw6Fuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnQSBtxbF2ZWxldCBwYXJhbcOpdGVyIGFsYXDDqXJ0ZWxtZXpldHQgw6lydMOpa2UgYSBueWlsdsOhbm9zIGVsxZF0w6l0cHJvZ3JhbW7DoWwuIEEgbcWxdmVsZXQgcGFyYW3DqXRlcnQgYSByZW5kc3plciBwYXJhbmNzZsOhamxqYWliYW4gaGFzem7DoWxqw6FrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYSBHeUlLIGPDrW3DqXQgw7Zzc3plIGtlbGwtZSBmxbF6bmkgYSBiZWplZ3l6w6lzIHTDoXJnecOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdBbm5hayBtZWdoYXTDoXJvesOhc2EsIGhvZ3kgbWVseSBvc3psb3BvayBsZWd5ZW5layBsw6F0aGF0w7NrIGEga2FwY3NvbHQgR3lJSy1vayBmZWzDvGxldGkgZWxlbWVuIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IOKAnsO2c3N6ZXRldHTigJ0pLiBNZWdqZWd5esOpczogY3NhayBHeUlLIGF0dHJpYsO6dHVtb2sgw6lzIGRpbmFtaWt1cyBtZXrFkWsgKER5bmFtaWNGaWVsZF9Ow6l2WCkgZW5nZWTDqWx5ZXpldHRlayBhIERlZmF1bHRDb2x1bW5zIMOpcnTDqWtlaW7DqWwuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gbGV0aWx0dmEsIDEgPSBlbMOpcmhldMWRLCAyID0gYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6ZXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kgR3lJSyBuYXBsw7Mga2lzIG7DqXpldMOpbmVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgaGF0w6Fyb3ogbWVnIGVneSBHeUlLIGxpc3RhIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBrZXJlc8Opc8OpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGF6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyBrZXJlc8Opc8OpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBhIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBrZXJlc8Opc8OpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGF6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGEgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRldCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6luZWsgZXJlZG3DqW55w6liZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGV0IGF6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqW5layBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGV0IGEgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpbmVrIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBrZXJlc8Opc2kgZXJlZG3DqW55IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kasOpdCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IGtlcmVzw6lzaSBlcmVkbcOpbnkgYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRqw6l0IGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IGtlcmVzw6lzaSBlcmVkbcOpbnkgYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRqw6l0IGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IEd5SUsga2VyZXPDqXNpIGF0dHJpYsO6dHVtb3QgYSBHeUlLIGtlcmVzw6lzIGvDqXBlcm55xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBHeUlLLWFsYXDDuiBqZWd5YmUgYmVzesO6cmFuZMOzIGluZm9ybcOhY2nDs2thdC4gQSDigJ5UZWxqZXMgR3lJS+KAnSBzesO2dmVnZXQsIG1lbGzDqWtsZXRla2V0IMOpcyBiZcOhZ3lhem90dCBrw6lwZWtldCB0YXJ0YWxtYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbSBwYXJhbcOpdGVyZWl0LiBBIOKAnkxpbWl04oCdIGhhdMOhcm96emEgbWVnIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBiZWplZ3l6w6lzZWsgc3rDoW3DoXQuIEEg4oCeR3JvdXDigJ0gaGFzem7DoWxoYXTDsyBhIGhvenrDoWbDqXLDqXMga29ybMOhdG96w6Fzw6Fob3ogYSBixZF2w610bcOpbnlyZSAocMOpbGTDoXVsIEdyb3VwOiBhZG1pbjtjc29wb3J0MTtjc29wb3J0MjspLiBBIOKAnkRlZmF1bHTigJ0gamVsemksIGhhIGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBoYSBhIGZlbGhhc3puw6Fsw7NuYWsga8OpenplbCBrZWxsIGVuZ2Vkw6lseWV6bmllIGF6dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZXR0IG9zemxvcG9rYXQgYSBHeUlLIGLDtm5nw6lzesWRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgbWVnamVsZW7DrXRldHQgb3N6bG9wb2thdCBhIEd5SUsgbmFwbMOzYmFuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEgR3lJSyBrZXJlc8WRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdNZWdoYXTDoXJvenphLCBob2d5IGEg4oCeR3lJSyBiZXN6w7pyw6FzYeKAnSBoaXZhdGtvesOhcyBob2wgbGVneWVuIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0EgR3lJSyBlbGVtIHN6YWJhZCBzesO2dmVnZXMgbWV6xZFqw6luZWsgbWVnaGF0w6Fyb3rDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdBIEd5SUsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGhvenrDoWFkw6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLiBMZWhldHPDqWdlcyBiZcOhbGzDrXTDoXNvazogMCA9IExldGlsdHZhLCAxID0gRW5nZWTDqWx5ZXp2ZSwgMiA9IEVuZ2Vkw6lseWV6dmUgw6lzIGvDtnRlbGV6xZEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBzemVya2VzenTDqXNlIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gTGV0aWx0dmEsIDEgPSBFbmdlZMOpbHllenZlLCAyID0gRW5nZWTDqWx5ZXp2ZSDDqXMga8O2dGVsZXrFkS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyDDoXR0ZWtpbnTFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLiBMZWhldHPDqWdlcyBiZcOhbGzDrXTDoXNvazogMCA9IExldGlsdHZhLCAxID0gRW5nZWTDqWx5ZXp2ZSwgMiA9IEVuZ2Vkw6lseWV6dmUgw6lzIGvDtnRlbGV6xZEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgw6F0dGVraW50xZEga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4gTGVoZXRzw6lnZXMgYmXDoWxsw610w6Fzb2s6IDAgPSBMZXRpbHR2YSwgMSA9IEVuZ2Vkw6lseWV6dmUsIDIgPSBFbmdlZMOpbHllenZlIMOpcyBrw7Z0ZWxlesWRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLiBMZWhldHPDqWdlcyBiZcOhbGzDrXTDoXNvazogMCA9IExldGlsdHZhLCAxID0gRW5nZWTDqWx5ZXp2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgbnlvbXRhdMOhc2Ega8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4gTGVoZXRzw6lnZXMgYmXDoWxsw610w6Fzb2s6IDAgPSBMZXRpbHR2YSwgMSA9IEVuZ2Vkw6lseWV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0EgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIG55b210YXTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gTGV0aWx0dmEsIDEgPSBFbmdlZMOpbHllenZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGtlcmVzw6lzIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gTGV0aWx0dmEsIDEgPSBFbmdlZMOpbHllenZlLCAyID0gRW5nZWTDqWx5ZXp2ZSDDqXMgYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsga2VyZXPDqXMga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4gTGVoZXRzw6lnZXMgYmXDoWxsw610w6Fzb2s6IDAgPSBMZXRpbHR2YSwgMSA9IEVuZ2Vkw6lseWV6dmUsIDIgPSBFbmdlZMOpbHllenZlIMOpcyBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXR2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBrZXJlc8OpcyBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLiBMZWhldHPDqWdlcyBiZcOhbGzDrXTDoXNvazogMCA9IExldGlsdHZhLCAxID0gRW5nZWTDqWx5ZXp2ZSwgMiA9IEVuZ2Vkw6lseWV6dmUgw6lzIGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsga2lzIGZvcm3DoXR1bcO6IMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gTGV0aWx0dmEsIDEgPSBFbmdlZMOpbHllenZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIG5hZ3nDrXTDoXMga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4gTGVoZXRzw6lnZXMgYmXDoWxsw610w6Fzb2s6IDAgPSBMZXRpbHR2YSwgMSA9IEVuZ2Vkw6lseWV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgbmFnecOtdMOhcyBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLiBMZWhldHPDqWdlcyBiZcOhbGzDrXTDoXNvazogMCA9IExldGlsdHZhLCAxID0gRW5nZWTDqWx5ZXp2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBuYWd5w610w6FzIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuIExlaGV0c8OpZ2VzIGJlw6FsbMOtdMOhc29rOiAwID0gTGV0aWx0dmEsIDEgPSBFbmdlZMOpbHllenZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnQSBHeUlLIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1TDtmJiIG55ZWx2IGVuZ2Vkw6lseWV6w6lzZSBhIEd5SUsgbW9kdWxiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ0Ega2FwY3NvbMOzZMOzIGJlamVneXrDqXNlayBmdW5rY2nDsyBlbmdlZMOpbHllesOpc2UgYXogw7xneWbDqWwgZWzFkXTDqXRwcm9ncmFtaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1N6YXZhesOhc2kgbWVjaGFuaXptdXMgZW5nZWTDqWx5ZXrDqXNlIGEgR3lJSyBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdCw7ZuZ8Opc3rFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdHeUlLIEFKQVggdsOhbGFzemFkw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdHeUlLIEFKQVggdsOhbGFzemFkw7MgYSBSaWNodGV4dGhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdHeUlLIHRlcsO8bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0d5SUsgdGVyw7xsZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnR3lJSyB0w7ZybMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnR3lJSyBzemVya2VzenTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdHeUlLIG5hcGzDsyDDoXR0ZWtpbnTFkSDigJ5raXPigJ0ga29ybMOhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0d5SUsgw6F0dGVraW50xZEg4oCea2lz4oCdIGtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0d5SUsgbnlvbXRhdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnT2xkYWxhbmvDqW50aSBHeUlLIGtvcmzDoXQgYSDigJ5raXPigJ0gR3lJSyBuYXBsw7Mgw6F0dGVraW50xZFuw6lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdPbGRhbGFua8OpbnRpIEd5SUsga29ybMOhdCBhIOKAnmtpc+KAnSBHeUlLIMOhdHRla2ludMWRbsOpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGtlcmVzw6lzaSBow6F0dMOpcnByb2dyYW0gw7p0dsOhbGFzenTDs2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICc0LiBtZXrFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICc1LiBtZXrFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ1RlbGplcyBHeUlLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0Nzb3BvcnQgYSBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6FzaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnQSBHeUlLIGVsxZF6bcOpbnllaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnQmVsc8WRIG1lesWRayBmZWx2w6l0ZWxlIGVneSBHeUlLLWFsYXDDuiBqZWd5ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnTWluZGVuIG1lesWRIG5ldsOpbmVrIGZlbHbDqXRlbGUgZWd5IEd5SUstYWxhcMO6IGplZ3liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnQXpvayBhIGZlbMO8bGV0ZWssIGFob2wgYSBneW9ycyBrZXJlc8Opc25layBtZWcga2VsbCBqZWxlbm5pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ05hcGzDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnTnllbHZrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ0Ega2VyZXPDqXMga29ybMOhdG96w6FzYSBhIGt1bGNzc3rDsyBHeUlLIGJlamVneXrDqXNsaXN0YSDDtnNzemXDoWxsw610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ03DoXNpayBvYmpla3R1bSBob3p6w6FrYXBjc29sw6FzYSBlaGhleiBhIEd5SUsgZWxlbWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0F6b24gdsOhcsOzbGlzdGFuZXZlayBsaXN0w6FqYSwgYW1lbHlla27DqWwgYSBrYXBjc29sw7Nkw7MgYmVqZWd5esOpcyBmdW5rY2nDsyBlbmdlZMOpbHllenZlIHZhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnw4FsbGFwb3R0w61wdXNvayBsaXN0w6FqYSwgYW1lbHllayBoYXN6bsOhbGhhdMOzayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OBbGxhcG90dMOtcHVzb2sgbGlzdMOhamEsIGFtZWx5ZWsgaGFzem7DoWxoYXTDs2sgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnw4FsbGFwb3R0w61wdXNvayBsaXN0w6FqYSwgYW1lbHllayBoYXN6bsOhbGhhdMOzayBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkSBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIGxlZ25hZ3lvYmIgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZEgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBsw6l2xZEgR3lJSyBuYXBsw7NiYW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXMgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGtlcmVzw6lzIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXMgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsgYsO2bmfDqXN6xZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBHeUlLIGtlcmVzxZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsga2VyZXPFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsga2VyZXPFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBuYXBsw7NiYW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBhIEhUTUwgT3BlblNlYXJjaCBwcm9maWwgZWzFkcOhbGzDrXTDoXPDoWhveiBhIHLDtnZpZCBHeUlLIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBhIEhUTUwgT3BlblNlYXJjaCBwcm9maWwgZWzFkcOhbGzDrXTDoXPDoWhveiBhIHLDtnZpZCBHeUlLIGtlcmVzw6lzaGV6IGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICdFZ3kgbW9kdWwgYSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsIGVsxZHDoWxsw610w6Fzw6Fob3ogYSByw7Z2aWQgR3lJSyBrZXJlc8Opc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnw5pqIEd5SUsgYmVqZWd5esOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBeiDDumogR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc2Egc3rDvGtzw6lnZXMgYSBrw7Z6esOpdMOpdGVsw7xrIGVsxZF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBrZXJlc8Opc2kgZXJlZG3DqW55IG1pbmRlbiBvbGRhbMOhbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIHN6w6FtYSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBzesOhbWEgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQSBtZWdqZWxlbsOtdGV0dCBlbGVtZWsgc3rDoW1hIGEgbGVndXTDs2JiIG3Ds2Rvc8OtdG90dGFrYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0EgbWVnamVsZW7DrXRldHQgZWxlbWVrIHN6w6FtYSBhIGxlZ3V0w7NiYiBsw6l0cmVob3pvdHRha2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBIG1lZ2plbGVuw610ZXR0IGVsZW1layBzesOhbWEgYSBsZWdqb2JiIDEwIHN6b2xnw6FsdGF0w6FzYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnS2ltZW5ldHN6xbFyxZEgSmF2YVNjcmlwdCBob3p6w6FhZMOhc8OhaG96IGF6IMO8Z3lmw6lsamVneSDDvHplbmV0IGvDqXBlcm55xZFow7Z6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdLaW1lbmV0a29ybMOhdCBhIGthcGNzb2zDs2TDsyBHeUlLIGJlamVneXrDqXNla2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga2lzIEd5SUsgbmFwbMOzIMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBHeUlLIGVsZW1layBtZWdqZWxlbm5laykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBraXMgR3lJSyDDoXR0ZWtpbnTFkSBvbGRhbGFpaG96IChhbWVseWVrYmVuIGEgR3lJSyBlbGVtZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0EgR3lJSyBueW9tdGF0w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ055aWx2w6Fub3MgR3lJSyBueW9tdGF0w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnTnlpbHbDoW5vcyBHeUlLIG5hZ3nDrXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ055aWx2w6Fub3MgR3lJSyBrZXJlc8Opcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdOeWlsdsOhbm9zIEd5SUsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1bDoXLDs2xpc3RhIGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ8OJcnTDqWtlbMOpc2VrIGEgc3phdmF6w6FzaG96LiBBIGt1bGNzbmFrIHN6w6F6YWzDqWtiYW4ga2VsbCBsZW5uaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdHeUlLIGtlcmVzw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgYWxhcMOpcnRlbG1lemV0dCBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQSBiZcOhZ3lhem90dCBIVE1MIG1lesWRayBhbGFww6lydGVsbWV6ZXR0IG1hZ2Fzc8OhZ8OhbmFrIGJlw6FsbMOtdMOhc2EgKGvDqXBwb250YmFuKSBheiDDvGd5ZsOpbCBHeUlLLW5hZ3nDrXTDoXMgKMOpcyBueWlsdsOhbm9zIEd5SUstbmFnecOtdMOhcykgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgbGVnbmFneW9iYiBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQSBiZcOhZ3lhem90dCBIVE1MIG1lesWRayBsZWduYWd5b2JiIG1hZ2Fzc8OhZ8OhbmFrIGJlw6FsbMOtdMOhc2EgKGvDqXBwb250YmFuKSBheiDDvGd5ZsOpbCBHeUlLLW5hZ3nDrXTDoXMgKMOpcyBueWlsdsOhbm9zIEd5SUstbmFnecOtdMOhcykgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnQSDigJ5HeUlLIGhpdmF0a296w6FzIGJlc3rDunLDoXNh4oCdIGdvbWIgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIGtpcyBuw6l6ZXTDqWJlbiBhIG55aWx2w6Fub3MgR3lJSyBiZWplZ3l6w6lzZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdBIOKAnkd5SUsgc3rDtnZlZyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2HigJ0gLyDigJ5UZWxqZXMgR3lJSyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2HigJ0gZ29tYiBtZWdqZWxlbsOtdMOpc2UgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMga2lzIG7DqXpldMOpYmVuIGEgbnlpbHbDoW5vcyBHeUlLIGJlamVneXrDqXNla27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdBIOKAnkd5SUsgc3rDtnZlZyBiZXN6w7pyw6FzYeKAnSAvIOKAnlRlbGplcyBHeUlLIGJlc3rDunLDoXNh4oCdIGdvbWIgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIGtpcyBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnR3lJSyBiZWplZ3l6w6lzIG1lZ2plbGVuw610w6lzZSBIVE1MIGZvcm3DoXrDoXNzYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0d5SUsgw7p0dm9uYWwgbWVnamVsZW7DrXTDqXNlIGlnZW4vbmVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJcnbDqW55dGVsZW4gZWxlbWVrIG1lZ2plbGVuw610w6lzZSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6luZWsgZXJlZG3DqW55w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBbGthdGVnw7NyacOhayBlbGVtZWluZWsgbWVnamVsZW7DrXTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sasOhcmEgbcOzZG9zw610b3R0IGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCBmZWzDvGxldGVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sasOhcmEgbMOpdHJlaG96b3R0IGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCBmZWzDvGxldGVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ0NzaWxsYWdvayBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCDDqXJ0w6lra2VsIGVneWVubMWRIHZhZ3kgYW5uw6FsIGpvYmIgw6lydMOpa2Vsw6lzc2VsIHJlbmRlbGtlesWRIGJlamVneXrDqXNla27DqWwgKMOhbGzDrXRzYSBheiDDqXJ0w6lrZXQg4oCeMOKAnS1yYSBhIGtpbWVuZXQga2lrYXBjc29sw6Fzw6Fob3opLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQSBsZWdqb2JiIDEwIGVsZW0gbWVnamVsZW7DrXTDqXNlIGEgbWVnaGF0w6Fyb3pvdHQgZmVsw7xsZXRla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU3phdmF6w6FzIG1lZ2plbGVuw610w6lzZSBhIG1lZ2hhdMOhcm96b3R0IGZlbMO8bGV0ZWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuLCBhbWVseSBsZWhldMWRdsOpIHRlc3ppIGVneSBHeUlLIGhvenrDoWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0bmVrIGF6IGlseWVuIEd5SUsgbmFnecOtdMOhc2kgbsOpemV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4sIGFtZWx5IGxlaGV0xZF2w6kgdGVzemkgZWd5IEd5SUsgdMO2cmzDqXPDqXQgYW5uYWsgbmFnecOtdMOhc2kgbsOpemV0w6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBHeUlLIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kgR3lJSyBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmUgdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBHeUlLIG55b210YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdNZWdvbGTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ0plbGVuc8OpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdDc2FrIHN6w7Z2ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBueWVsdmVrIGEga2FwY3NvbMOzZMOzIEd5SUsgYmVqZWd5esOpc2VrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWd5IEd5SUsgYXpvbm9zw610w7NqYSwgcMOpbGTDoXVsIEZBUSMsIFRCIywgR3lJSyMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGhhdMOhcm96emEgbWVnLCBob2d5IGVneSDigJ5HeUlL4oCdIG9iamVrdHVtIMO2c3N6ZWvDtnRoZXTFkS1lIG3DoXMg4oCeR3lJS+KAnSBvYmpla3R1bW9ra2FsIGEg4oCeTm9ybcOhbOKAnSBoaXZhdGtvesOhc3TDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgZWd5IOKAnkd5SUvigJ0gb2JqZWt0dW0gw7Zzc3pla8O2dGhldMWRLWUgbcOhcyDigJ5HeUlL4oCdIG9iamVrdHVtb2trYWwgYSDigJ5TesO8bMWRLWd5ZXJtZWvigJ0gaGl2YXRrb3rDoXN0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBoYXTDoXJvenphIG1lZywgaG9neSBlZ3kg4oCeR3lJS+KAnSBvYmpla3R1bSDDtnNzemVrw7Z0aGV0xZEtZSBtw6FzIOKAnkplZ3nigJ0gb2JqZWt0dW1va2thbCBhIOKAnk5vcm3DoWzigJ0gaGl2YXRrb3rDoXN0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGhhdMOhcm96emEgbWVnLCBob2d5IGVneSDigJ5HeUlL4oCdIG9iamVrdHVtIMO2c3N6ZWvDtnRoZXTFkS1lIG3DoXMg4oCeSmVneeKAnSBvYmpla3R1bW9ra2FsIGEg4oCeU3rDvGzFkS1neWVybWVr4oCdIGhpdmF0a296w6FzdMOtcHVzIGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0plZ3kgdMO2cnpzZSBlZ3kgR3lJSyBiZWplZ3l6w6lzIGrDs3bDoWhhZ3nDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0plZ3kgdMOhcmd5YSBlZ3kgR3lJSyBiZWplZ3l6w6lzIGrDs3bDoWhhZ3nDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0VzemvDtnp0w6FyZWxlbSBlZ3kgZ3lvcnNiaWxsZW50ecWxaMO2ei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2vDvGxzxZEgKMO8Z3lmw6lsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnYmVsc8WRICjDvGd5aW50w6l6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ255aWx2w6Fub3MgKG55aWx2w6Fub3MpJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRha3VuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWJ1YWgga2F0ZWdvcmkgZGlidXR1aGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZXJzZXR1anVhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdIYXB1cyBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1Yi1rYXRlZ29yaSBkYXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2lsYWhrYW4gcGlsaWggc2V0aWRha255YSBzYXR1IGl6aW4gZ3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cCBBZ2VuIHlhbmcgZGFwYXQgbWVuZ2Frc2VzIGFydGlrZWwgZGFsYW0ga2F0ZWdvcmkgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdBa2FuIGRpdGFtcGlsa2FuIHNlYmFnYWkga29tZW50YXIgZGkgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMga2F0ZWdvcmkgaW5pPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgZGFwYXQgbWVuZ2hhcHVzIGthdGVnb3JpIGluaS4gS2F0ZWdvcmkgaW5pIGRpcGFrYWkgcGFkYSBzZXRpZGFrbnlhIHNhdHUgYXJ0aWtlbCBGQVEgZGFuL2F0YXUgbWVydXBha2FuIHBhcmVudCBkYXJpIHNhbGFoIHNhdHUga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdLYXRlZ29yaSBpbmkgZGlndW5ha2FuIGRhbGFtIGFydGlrZWwgRkFRIGJlcmlrdXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpIGluaSBtZXJ1cGFrYW4gcGFyZW50IGRhcmkgc3Via2F0ZWdvcmkgYmVyaWt1dCBpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnQW5kYSB5YWtpbiBha2FuIG1lbmdoYXB1cyBhcnRpa2VsIEZBUSBpbmk/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRWtzcGxvcmVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gQ2VwYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0thcmFrdGVyIGJlYmFzIGRpcGVya2VuYW5rYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVuY2FyaWFuIExlYmloIExhbmp1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3Via2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdTdWJrYXRlZ29yaSB0aWRhayBkaXRlbXVrYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ1Jpd2F5YXQgZGFyaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEYXRhIEp1cm5hbCBGQVEgdGlkYWsgZGl0ZW11a2FuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gQmFoYXNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnVGFtYmFoIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdIYXB1cyBCYWhhc2EgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnVGFtYmFoIEJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdCBCYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMgYmFoYXNhIGluaT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnQW5kYSB0aWRhayBkYXBhdCBtZW5naGFwdXMgYmFoYXNhIGluaS4gQmFoYXNhIGluaSBkaWd1bmFrYW4gcGFkYSBzYWxhaCBzYXR1IGFydGlrZWwgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0JhaGFzYSBpbmkgZGlndW5ha2FuIHBhZGEgQXJ0aWtlbC1hcnRpa2VsIEZBUSBiZXJpa3V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUGVuZ2F0dXJhbiBLb250ZWtzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlrZWwgRkFRIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ1RpZGFrIGRpdGVtdWthbiBkYXRhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS2F0YSBrdW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnUGlsaWggKGNvbnRvaDogU2FtYSBEZW5nYW4gMTAgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdQZXJpbmdrYXQgKGNvbnRvaDogU2FtYSBkZW5nYW4gMjUlIGF0YXUgTGViaWggQmVzYXIgZGFyaSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnRGlzZXR1anVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpcnViYWggb2xlaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1dha3R1IFBlbWJ1YXRhbiBBcnRpa2VsIEZBUSAoc2ViZWx1bS9zZXRlbGFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdXYWt0dSBQZW1idWF0YW4gQXJ0aWtlbCBGQVEgKGFudGFyYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdXYWt0dSBQZXJ1YmFoYW4gQXJ0aWtlbCBGQVEgKHNlYmVsdW0vc2V0ZWxhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnV2FrdHUgUGVydWJhaGFuIEFydGlrZWwgRkFRIChhbnRhcmEpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUVRla3NsZW5na2FwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnUGVuY2FyaWFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1BlbWlsaWhhbiBQcm9maWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1BpbGloJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdUaWRhayBhZGEgcGVuZ2F0dXJhbiBwZW1pbGloYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdQZW1pbGloYW4ga2h1c3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2NvbnRvaDogU2FtYSBEZW5nYW4gMTAgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdQZXJpbmdrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1RpZGFrIGFkYSBwZW5nYXR1cmFuIHBlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUGVyaW5na2F0IGtodXN1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2NvbnRvaDogU2FtYSBkZW5nYW4gMjUlIGF0YXUgTGViaWggQmVzYXIgZGFyaSA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdXYWt0dSBQZW1idWF0YW4gQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdXYWt0dSBQZXJ1YmFoYW4gQXJ0aWtlbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdQZXJpbmdrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkYXJpIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdQZW1pbGloYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnVHRkYWsgZGl0ZW11a2FuIHBlbWlsaWhhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0JlbHVtIGFkYSBQZW1pbGloYW4hIEphZGlsYWggeWFuZyBwZXJ0YW1hIG1lbGFrdWthbiBwZW1lcmluZ2thdGFuIGFydGlrZWwgRkFRIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ1VuZHVoIExhbXBpcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnVW50dWsgbWVtYnVrYSB0YXV0YW4gcGFkYSBiYWdpYW4gZGVza3JpcHNpIGJlcmlrdXQsIEFuZGEgaGFydXMgbWVuZWthbiB0b21ib2wgQ3RybCBhdGF1IENtcyBhdGF1IFNoaWZ0IHNhbWJpbCBtZW5la2FuIHRhdXRhbm55YSAodGVyZ2FudHVuZyBwYWRhIFNpc3RlbSBPcGVyYXNpIGRhbiBQZXJhbWJhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdTZWJlcmFwYSBiZXNhciBhcnRpa2VsIGluaSBtZW1iYW50dT8gTW9ob24gYmVyaWthbiBwZXJpbmdrYXQgQW5kYSBkYW4gaWt1dCBtZW1iYW50dSBEYXRhYmFzZSBGQVEuIFRlcmltYSBrYXNpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICd0aWRhayBtZW1iYW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdzYW5nYXQgbWVtYmFudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ1RhbWJhaGthbiBqdWR1bCBGQVEgcGFkYSBzdWJqZWsgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdNYXN1a2thbiBUZWtzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdNYXN1a2thbiBTZWx1cnVoIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdNYXN1a2thbiBUYXV0YW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdNYXN1a2FuIFRla3MgZGFuIFRhdXRhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ01hc3Vra2FuIFNlbHVydWggTGluayBkYW4gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnVGlkYWsgZGl0ZW11a2FuIGFydGlrZWwgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUGVuY2FyaWFuIFRla3NwZW51aCBwYWRhIEFydGlrZWwgRkFRIChjb250b2g6ICJKb2huKm4iIGF0YXUgIldpbGwiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ0JhdGFzYW4gUGVtaWxpaGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIHRlbGFoIGRpcGlsaWguLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdCYXRhc2FuIFBlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdIYW55YSBBcnRpa2VsIHlhbmcgbWVtaWxpa2kgcGVyaW5na2F0Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCBwYWRhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdQZW5jYXJpYW4tUHJvZmlsIHNlYmFnYWkgVGVtcGxhdGU/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTm9tb3IgQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0NhcmkgYXJ0aWtlbCBkZW5nYW4ga2F0YSBrdW5jaSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdLZW1iYWxpIGtlIEVrc3Bsb3JlciBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdTZWJ1YWgga2F0ZWdvcmkgaGFydXMgbWVtaWxpa2kgbmFtYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0thdGVnb3JpIGluaSBzdWRhaCBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXVwZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXRhbWJhaGthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtYSBkaWJ1dHVoa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0JhaGFzYSBpbmkgc3VkYWggYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXBlcmJhcnVpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXRhbWJhaGthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnUGVyYmFydWFuIHRlcmFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0JpZGFuZyBkaW5hbWlzIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhICVzIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpZGFrIGFkYSBoYXNpbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbW9yIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RlcmltYSBrYXNpaCBhdGFzIHBpbGloYW5ueWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnQW5kYSBzdWRhaCBwZXJuYWggbWVtaWxpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdUaWRhayBhZGEgcGVyaW5na2F0IHlhbmcgZGlwaWxpaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnQ2V0YWsgQXJ0aWtlbCBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpa2VsIEZBUSAodGVyYmFydSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWwgRkFRICh0ZXJha2hpciBkaXJ1YmFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpa2VsIEZBUSAoMTAgdGVyYXRhcyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQXJ0aWtlbCBpbmkga29zb25nISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpa2VsIEZBUSB0ZXJha2hpciBkaWJ1YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEgcGFsaW5nIGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlrZWwgRkFRIDEwIHRlcmF0YXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICd1bXVtJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnU2VidWFoIGZpbHRlciB1bnR1ayBvdXRwdXQgSFRNTCB1bnR1ayBtZW5hbWJhaGthbiB0YXV0YW4gdGVya2FpdCBzdHJpbmcgeWFuZyBkaXRlbnR1a2FuLiBEdWEgYnVhaCBtYXN1a2FuIGRpcGVya2VuYW5rYW4gdW50dWsgRWxlbWVuIEdhbWJhci4gUGVydGFtYSBuYW1hIGRhcmkgZ2FtYmFyIChjb250b2g6IGZhcS5wbmcpLiBQYWRhIGthc3VzIGluaSBwYXRoIGdhbWJhciBPVFJTIHlhbmcgZGlndW5ha2FuLiBLZW11bmdraW5hbiBrZWR1YSBhZGFsYWggbWVtYXN1a2thbiB0YXV0YW4ga2UgZGFsYW0gZ2FtYmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdXYXJuYSBDU1MgdW50dWsgaGFzaWwgcGVtaWxpaGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnV2FrdHUgQ2FjaGUgVW50dWsgS2VsdWFyIGRhbGFtIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnUG9zaXNpIGRlc2ltYWwgcGFkYSBoYXNpbCBwZW1pbGloYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOYW1hIGthdGVnb3JpIGRlZmF1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdCYWhhc2EgZGVmYXVsdCB1bnR1ayBhcnRpa2VsIEZBUSBwYWRhIG1vZGUgc2F0dSBiYWhhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmF1bHQgdWt1cmFuIG1ha3NpbXVtIGp1ZHVsIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRGVmYXVsdCBwcmlvdGl0YXMgZGFyaSB0aWtldCB1bnR1ayBwZXJzZXR1anVhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YXR1cyBkZWZhdWx0IHVudHVrIGVudHJpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhdHVzIGRlZmF1bHQgdGlrZXQgdW50dWsgcGVyc2V0dWp1YW4gcGFkYSBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBlIHRpa2V0IGRlZmF1bHQgdW50dWsgcGVyc2V0dWp1YW4gYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ05pbGFpIGRlZmF1bHQgdW50dWsgcGFyYW1ldGVyIEFrc2kgdW50dWsgZnJvbnRlbmQgdW11bS4gUGFyYW1ldGVyIGFrc2kgZGlndW5ha2FuIHBhZGEgc2tyaXAgZGFyaSBTaXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdUZW50dWthbiBqaWthIGp1ZHVsIEZBUSBoYXJ1cyB0ZXJzYW1idW5nIGtlIHN1YmplayBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdUZW50dWthbiBzZWJ1YWggZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWgganVybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdUZW50dWthbiBzZWJ1YWggZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWggZGFmdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgZGVmYXVsdCBGQVEgdW50dWsgcGVueW9ydGlyYW4gRkFRIGRhbGFtIHBlbmNhcmlhbiBGQVEgZGFyaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVudHVrYW4gYXRyaWJ1dCBzdGFuZGFyIEZBUSB1bnR1ayBwZW55b3J0aXJhbiBkYWxhbSBQZW5jYXJpYW4gRkFRIGRhcmkgYW50YXJtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgc3RhbmRhciBGQVEgdW50dWsgcGVueW9ydGlyYW4gZGFsYW0gcGVuY2FyaWFuIEZBUSB1bnR1ayBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBwYWRhIGFudGFybXVrYSBhZ2VuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHBhZGEgYW50YXJtdWthIHVtdW0uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBGQVEgc3RhbmRhciB5YW5nIGRpdGFtcGlsa2FuIHVudHVrIGxheWFyIHBlbmNhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnVGVudHVrYW4gaW5mb3JtYXNpIHlhbmcgYWthbiBkaSBtYXN1a2FuIGtlIGRhbGFtIHNlYnVhaCBUaWtldCBiZXJkYXNhciBGQVEuICJGQVEgbGVuZ2thcCIgYmVyaXNpIHRla3MsIGxhbXBpcmFuLCBkYW4gZ2FtYmFyIGRpIGJhcmlzYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHBhcmFtZXRlciB1bnR1ayBiYWNrZW5kIGRhc2Jvci4gIkxpbWl0IiBtZW5lbnR1a2FuIGp1bWxhaCBlbnRyaSB5YW5nIGRpIHRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4gIkdyb3VwIiBkaSBndW5ha2FuIHVudHVrIG1lbWJhdGFzaSBha3NlcyBrZSBwbHVnaW4gKG1pc2FsbnlhIEdydXA6IGFkbWluO2dydXAxO2dydXAyOykuICJEZWZhdWx0IiBtZW5naW5kaWthc2lrYW5qaWthIHBsdWdpbiBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSBtZW5nYWt0aWZrYW5ueWEgc2VjYXJhIG1hbnVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnVGVudHVrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkaSBFa3NwbG9yZXIgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wZW5nYXJ1aGkgcG9zaXNpIGtvbG9tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGtvbG9tIHlhbmcgZGkgdGFtcGlsa2FuIGRpIGp1cm5hbCBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdUZW50dWthbiBrb2xvbSB5YW5nIGRpIHRhbXBpbGthbiBkaWRhbGFtIHBlbmNhcmlhbiBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnVGVudHVrYW4gZGltYW5hIHRhdXRhbiBcJ01hc3Vra2FuIEZBUVwnIGFrYW4gZGl0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXNpIGRhcmkgaXRlbSB0ZWtzIGZpZWxkIGJlYmFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdIYXB1cyBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBkYWxhbSBtZW5hbWJhaCBsYXlhciBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4gUGVuZ2F0dXJhbiB5YW5nIG1lbXVuZ2tpbmthbjogMCA9IGRpIG5vbmFrdGlma2FuLCAxID0gZGkgYWt0aWZrYW4sIDIgPSBkaSBha3RpZmthbiBkYW4gZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBkYWxhbSBtZW5ndWJhaCBsYXlhciBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4gUGVuZ2F0dXJhbiB5YW5nIG1lbXVuZ2tpbmthbjogMCA9IGRpIG5vbmFrdGlma2FuLCAxID0gZGkgYWt0aWZrYW4sIDIgPSBkaSBha3RpZmthbiBkYW4gZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgZGFsYW0gbGF5YXIgZ2FtYmFyYW4gdW11bSBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbiwgMiA9IGRpIGFrdGlma2FuIGRhbiBkaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgZGFsYW0gbGF5YXIgZ2FtYmFyYW4gdW11bSBGQVEgcGFkYSBhbnRhcm11a2EgdW11bS4gUGVuZ2F0dXJhbiB5YW5nIG1lbXVuZ2tpbmthbjogMCA9IGRpIG5vbmFrdGlma2FuLCAxID0gZGkgYWt0aWZrYW4sIDIgPSBkaSBha3RpZmthbiBkYW4gZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGxheWFyIGNldGFrIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGxheWFyIGNldGFrIEZBUSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIFBlbmdhdHVyYW4geWFuZyBtZW11bmdraW5rYW46IDAgPSBkaSBub25ha3RpZmthbiwgMSA9IGRpIGFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGxheWFyIGNldGFrIEZBUSBwYWRhIGFudGFybXVrYSB1bXVtLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgZGFsYW0gbGF5YXIgcGVuY2FyaWFuIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbiwgMiA9IGRpIGFrdGlma2FuIGRhbiBkaSB0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGxheWFyIHBlbmNhcmlhbiBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbiwgMiA9IGRpIGFrdGlma2FuIGRhbiBkaSB0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBkYWxhbSBsYXlhciBwZW5jYXJpYW4gRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uIFBlbmdhdHVyYW4geWFuZyBtZW11bmdraW5rYW46IDAgPSBkaSBub25ha3RpZmthbiwgMSA9IGRpIGFrdGlma2FuLCAyID0gZGkgYWt0aWZrYW4gZGFuIGRpIHRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBkYWxhbSBmb3JtYXQga2VjaWwgbGF5YXIgZ2FtYmFyYW4gRkFRIHBhZGEgYW50YXJtdWthIGFnZW4uIFBlbmdhdHVyYW4geWFuZyBtZW11bmdraW5rYW46IDAgPSBkaSBub25ha3RpZmthbiwgMSA9IGRpIGFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBkYWxhbSBsYXlhciB6b29tIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgZGFsYW0gbGF5YXIgem9vbSBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBQZW5nYXR1cmFuIHlhbmcgbWVtdW5na2lua2FuOiAwID0gZGkgbm9uYWt0aWZrYW4sIDEgPSBkaSBha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGxheWFyIHpvb20gRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uIFBlbmdhdHVyYW4geWFuZyBtZW11bmdraW5rYW46IDAgPSBkaSBub25ha3RpZmthbiwgMSA9IGRpIGFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAndWJhaCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aWZrYW4gbXVsdGliYWhhc2EgcGFkYSBtb2R1bCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIG1la2FuaXNtZSB2b3RpbmcgcGFkYSBtb2R1bCBGQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0Vrc3Bsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnSnVybmFsIGdhbWJhcmFuIGJhdGFzICJrZWNpbCIgIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0dhbWJhcmFuIGJhdGFzICJLZWNpbCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdCYXRhcyBwZXIgaGFsYW1hbiBGQVEgdW50dWsganVybmFsIGdhbWJhcmFuICJrZWNpbCIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdCYXRhcyBwZXIgaGFsYW1hbiBGQVEgdW50dWsgZ2FtYmFyYW4gImtlY2lsIiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ1BlbmNhcmlhbiBwZW5lcnVzIGJhY2tlbmQgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnRmllbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZpZWxkNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwIHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdTZWphcmFoIGRhcmkgRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnTWFzdWthbiBiaWRhbmcgaW50ZXJuYWwgcGFkYSBUaWtldCBiZXJkYXNhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnTWFzdWthbiBuYW1hIHNldGlhcCBiaWRhbmcgcGFkYSBUaWtldCBiZXJkYXNhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnQW50YXJtdWthIGRpbWFuYSBwZW5jYXJpYW4gY2VwYXQgaGFydXMgZGkgdGFtcGlsa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBCYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnVGF1dGthbiBvYmplayBsYWlubnlhIGtlIGl0ZW0gRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEYWZ0YXIgamVuaXMgc3RhdHVzIHlhbmcgZGFwYXQgZGlndW5ha2FuIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RhZnRhciBqZW5pcyBzdGF0dXMgeWFuZyBkYXBhdCBkaWd1bmFrYW4gcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGFmdGFyIGplbmlzIHN0YXR1cyB5YW5nIGRhcGF0IGRpZ3VuYWthbiBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIGRpIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBqdXJuYWwgRkFRIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwganVybmFsIEZBUSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIGp1cm5hbCBGQVEgZGkgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIFBlbmNhcmlhbiBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gUGVuY2FyaWFuIEZBUSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBQZW5jYXJpYW4gRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBKb3VybmFsIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW5naGFzaWxrYW4gcHJvZmlsIEhUTUwgUGVuY2FyaWFuVGVyYnVrYSB1bnR1ayBQZW5jYXJpYW4gcGVuZGVrIEZBUSBkaSBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ0FydGlrZWwgRkFRIEJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnQXJ0aWtlbCBGQVEgYmFydSBtZW1idXR1aGthbiBlcnNldHVqdWFuIHNlYmVsdW0gZGlwdWJsaWthc2lrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGl0YW1waWxrYW4gcGFkYSBFa3NwbG9yZXIgRkFRIGRpIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIHBhZGEgc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gcGFkYSBzZXRpYXAgaGFsYW1hbiBkYXJpIGhhc2lsIHBlbmNhcmlhbiBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0p1bWxhaCBpdGVtIHlhbmcgZGl0YW1waWxrYW4gZGFsYW0gcGVydWJhaGFuIHRlcmFraGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0p1bWxhaCBpdGVtIHlhbmcgZGkgdGFtcGlsa2FuIGRhbGFtIHBlbWJ1YXRhbiB0ZXJha2hpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdKdW1sYWggaXRlbSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIDEwIGZpdHVyIHRlcmF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaW1hbmEgaXRlbSBGQVEgZGkgdGFtcGlsa2FuKSBqdXJuYWwga2VjaWwgZ2FtYmFyYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpbWFuYSBpdGVtIEZBUSBkaSB0YW1waWxrYW4pIGdhbWJhcmFuIGtlY2lsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdDZXRhayBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdBbnRyaWFuIHVudHVrIGRpc2V0dWp1aW55YSBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1BlcmluZ2thdGthbiB1bnR1ayBtZW1pbGloLiAgS3VuY2kgaGFydXMgZGFsYW0gcGVyc2VudGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQ2FyaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdUZW50dWthbiB0aW5nZ2kgZGVmYXVsdCAoZGFsYW0gcGlrc2VsKSAgcGFkYSBiaWRhbmcgc2ViYXJpcyBIVE1MIHBhZGEgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHRpbmdnaSBkZWZhdWx0IChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnVGVudHVrYW4gdGluZ2dpIG1ha3NpbWFsIChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnVGVudHVrYW4gdGluZ2dpIG1ha3NpbWFsIChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUYW1waWxrYW4gdG9tYm9sICJNYXN1a2FuIHRhdXRhbiBGQVEiIHBhZGEgQWdlbnRGQVFab29tU21hbGwgdW50dWsgYXJ0aWtlbCBGQVEgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUYW1wbGlrYW4gdG9tYm9sICJNYXN1a2FuIHRla3MgJiB0YXV0YW4gRkFRIiAvICJNYXN1a2FuIEZBUSAmIFRhdXRhbiBsZW5na2FwIiBwYWRhIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGFydGlrZWwgRkFRIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdUYW1waWxrYW4gdG9tYm9sICJNYXN1a2FuIHRla3MgRkFRIiAvICJNYXN1a2FuIEZBUSBsZW5na2FwIiBwYWRhIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdUYW1waWxrYW4gYXJ0aWtlbCBGQVEgZGVuZ2FuIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1RhbXBpbGthbiBKYWx1ciBGQVEgaXlhL3RpZGFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnVGFtcGlsa2FuIGl0ZW0gZGFyaSBzdWJrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIGl0ZW0gdGVyYWtoaXIgeWFuZyBkaSB1YmFoIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUYW1waWxrYW4gaXRlbSB0ZXJha2hpciB5YW5nIGRpIGNpcHRha2FuIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIDEwIGl0ZW0gdGVyYXRhcyBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIHBlbWlsaWhhbiBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gZGkgbWVudSB5YW5nIG1lbmdpemlua2FuIGh1YnVuZ2FuIEZBUSBkZW5nYW4gb2JqZWsgbGFpbiBkaSB0YW1waWxhbiB6b29tIHNlcGVydGkgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBwYWRhIG1lbnUgeWFuZyBtZW5naXppbmthbiBwZW5naGFwdXNhbiBGQVEgcGFkYSB0YW1waWxhbiB6b29tIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBwYWRhIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggRkFRIHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIEZBUSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIHBhZGEgRkFRIHBhZGEgdGFtcGlsYW4gem9vbSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBtZW5jZXRhayBGQVEgcGFkYSB0YW1waWxhbiB6b29tbnlhIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnR2VqYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnUGVuZ2lkZW50aWZpa2FzaSB1bnR1ayBGQVEsIE1pc2FsbnlhIEZBUSMsIEtCIywgTXlGQVEjLiBTdGFuZGFybnlhIGFkYWxhaCBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdQZW5nYXR1cmFuIGluaSBtZW5kZWZpbmlza2FuIGJhaHdhIG9iamVrIFwnRkFRXCcgZGFwYXQgZGkgaHVidW5na2FuIGRlbmdhbiBvYmplayBcJ0ZBUVwnIGxhaW4gZGVuZ2FuIG1lbmdndW5ha2FuIHR5cGUgdGF1dGFuIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnUGVuZ2F0dXJhbiBpbmkgbWVuZGVmaW5pc2thbiBiYWh3YSBvYmplayBcJ0ZBUVwnIGRhcGF0IGRpIGh1YnVuZ2thbiBkZW5nYW4gb2JqZWsgXCdGQVFcJyBsYWluIGRlbmdhbiBtZW5nZ3VuYWthbiB0eXBlIHRhdXRhbiBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1BlbmdhdHVyYW4gaW5pIG1lbmRlZmluaXNrYW4gYmFod2Egb2JqZWsgXCdGQVFcJyBkYXBhdCBkaSBodWJ1bmdrYW4gZGVuZ2FuIG9iamVrIFwnVGlrZXRcJyBsYWluIGRlbmdhbiBtZW5nZ3VuYWthbiB0eXBlIHRhdXRhbiBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1BlbmdhdHVyYW4gaW5pIG1lbmRlZmluaXNrYW4gYmFod2Egb2JqZWsgXCdGQVFcJyBkYXBhdCBkaSBodWJ1bmdrYW4gZGVuZ2FuIG9iamVrIFwnVGlja2V0XCcgbGFpbiBkZW5nYW4gbWVuZ2d1bmFrYW4gdHlwZSB0YXV0YW4gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSXNpIHRpa2V0IHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnU3ViamVrIHRpa2V0IHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnSXRlbSB0b29sYmFyIHVudHVrIGphbGFuIHBpbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZWtzdGVybmFsIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5hbCAoYWdlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZ2dpdW5nZXJlIGFydGljb2xvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1Bhcm9sZSBjaGlhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdVbmEgY2F0ZWdvcmlhIMOoIG9iYmxpZ2F0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0FwcHJvdmF6aW9uZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uaSBDYXRlZ29yaWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0FnZ2l1bmdpIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFbGltaW5hIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FnZ2l1bmdpIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnTW9kaWZpY2EgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU290dG9jYXRlZ29yaWEgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlemlvbmFyZSBhbG1lbm8gdW4gZ3J1cHBvIGRpIHBlcm1lc3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHBvIGRpIHRlY25pY2kgdGhlIHB1w7IgYWNjZWRlcmUgYWdsaSBhcml0Y29saSBpbiBxdWVzdGEgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTYXJhbm5vIHZpc2liaWxpIGNvbWUgY29tbWVudGkgaW4gRXhwbG9yZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdTaSBkZXNpZGVyYSB2ZXJhbWVudGUgZWxpbWluYXJlIHF1ZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgcXVlc3RhIGNhdGVnb3JpYS4gVmllbmUgdXRpbGl6emF0YSBpbiBhbG1lbm8gdW4gYXJ0aWNvbG8gZS9vIMOoIGNvbGxlZ2F0YSBhZCBhbG1lbm8gdW5cJ2FsdHJhIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1F1ZXN0YSBjYXRlZ29yaWEgw6ggdXRpbGl6emF0YSBuZWwoaSkgc2VndWVudGUoaSkgYXJ0aWNvbGkgZGVsbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ1F1ZXN0YSBjYXRlZ29yaWEgw6ggY2Fwb2dydXBwbyBkZWxsZSBzZWd1ZW50aSBzb3R0b2NhdGVnb3JpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdTaSBkZXNpZGVyYSB2ZXJhbWVudGUgZWxpbWluYXJlIHF1ZXN0byBhcnRpY29sbyBkaSBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXNwbG9yYXRvcmUgZGkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1JpY2VyY2EgVmVsb2NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZCBzb25vIHBlcm1lc3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdSaWNlcmNhIEF2YW56YXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTb3R0b2NhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY29saSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdOZXNzdW5hIHNvdHRvY2F0ZWdvcmlhIHRyb3ZhdGEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdTdG9yaWNvIGRpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05lc3N1biBkYXRvIHRyb3ZhdG8gbmVsIFJpZXBpbG9nbyBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIExpbmd1YWdnaW8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZ2dpdW5naSBsaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnRWxpbWluYSBMaW5ndWEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQWdnaXVuZ2kgTGluZ3VhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdNb2RpZmljYSBkZWxsYSBsaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1NpIGRlc2lkZXJhIHZlcmFtZW50ZSBlbGltaW5hcmUgcXVlc3RhIGxpbmd1YT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgcXVlc3RhIGxpbmd1YS4gRVwnIHV0aWxpenphdGEgaW4gYWxtZW5vIHVuIGFydGljb2xvIGRlbGxhIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdRdWVzdG8gbGluZ3VhZ2dpbyDDqCB1dGlsaXp6YXRvIG5lbChpKSBzZWd1ZW50ZShpKSBhcnRpY29saSBkZWxsYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdJbXBvc3RhemlvbmkgZGkgY29udGVzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWNvbGkgRkFRIHBlciBwYWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTmVzc3VuIGRhdG8gZGVsbGEgRkFRIHRyb3ZhdG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1Bhcm9sYSBjaGlhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdG8gKGVzOiBVZ3VhbGUgMTAgbyBNYWdnaW9yZSBkaSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnUGVyY2VudHVhbGUgKGVzOiBVZ3VhbGUgMjUlIG8gTWFnZ2lvcmUgZGkgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0FwcHJvdmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVbHRpbWEgbW9kaWZpY2EgZWZmZXR0dWF0YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0lzdGFudGUgZGkgY3JlYXppb25lIGRlbGxcJ0FydGljb2xvIEZBUSAocHJpbWEvZG9wbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnSXN0YW50ZSBkaSBjcmVhemlvbmUgZGVsbFwnQXJ0aWNvbG8gRkFRIChmcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSXN0YW50ZSBkaSBtb2RpZmljYSBkZWxsXCdBcnRpY29sbyBGQVEgKHByaW1hL2RvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0lzdGFudGUgZGkgbW9kaWZpY2EgZGVsbFwnQXJ0aWNvbG8gRkFRIChmcmEpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUUZ1bGxUZXh0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQ2VyY2EgbmVsbGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnU2VsZXppb25hIFByb2ZpbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05lc3N1bmEgaW1wb3N0YXppb25lIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RpIHNwZWNpZmljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlcy4gVWd1YWxlIGEgMTAgbyBNYWdnaW9yZSBkaSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnUGVyY2VudHVhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ05vbiBjaSBzb25vIGltcG9zdGF6aW9uaSBzdWxsYSBwZXJjZW50dWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUGVyY2VudHVhbGUgc3BlY2lmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZXMuIFVndWFsZSBhIDI1JSBvIE1hZ2dpb3JlIGRpIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0lzdGFudGUgZGkgQ3JlYXppb25lIGRlbGxcJ0FydGljb2xvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0lzdGFudGUgZGkgbW9kaWZpY2EgZGVsbFwnQXJ0aWNvbG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWxsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnVmFsdXRhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdzdSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZXNzdW4gdm90byB0cm92YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmVzc3VuIHZvdG8gdHJvdmF0byEgUHVvaSBlc3NlcmUgaWwgcHJpbW8gYSB2b3RhcmUgcXVlc3RhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ1NjYXJpY2EgQWxsZWdhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQZXIgYXByaXJlIGkgY29sbGVnYW1lbnRpIG5laSBzZWd1ZW50aSBibG9jY2hpIGRlc2NyaXppb25lLCBwb3RyZWJiZSBlc3NlcmUgbmVjZXNzYXJpbyBwcmVtZXJlIEN0cmwgbyBDbWQgbyBTaGlmdCBtZW50cmUgc2kgY2xpY2NhIHN1bCBjb2xsZWdhbWVudG8gKGEgc2Vjb25kYSBkZWwgYnJvd3NlciBlIGRlbCBTaXN0ZW1hIE9wZXJhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnVmkgw6ggc3RhdG8gdXRpbGUgcXVlc3RvIGFydGljb2xvPyBWaSBwcmVnaGlhbW8gZGkgZGFyZSB1biB2b3RvIHBlciBjb250cmlidWlyZSBhIG1pZ2xpb3JhcmUgaWwgRGF0YWJhc2UgZGVsbGUgRkFRLiBHcmF6aWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbm9uIMOoIHN0YXRvIHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ21vbHRvIHV0aWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBZ2dpdW5naSBpbCB0aXRvbG8gZGVsbGEgRkFRIG5lbCBzb2dnZXR0byBkZWxsXCdhcnRpY29sbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcmlzY2kgaWwgdGVzdG8gZGVsbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luc2VyaXNjaSB1bmEgRkFRIGNvbXBsZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VyaXNjaSBGQVEgTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJpcmUgVGVzdG8gZSBsaW5rIGRlbGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpcmUgbGEgRkFRIGNvbXBsZXRhIGUgaWwgTGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lc3N1biBhcnRpY29sbyBGQVEgdHJvdmF0by4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdSaWNlcmNhIHRlc3R1YWxlIG5lZ2xpIGFydGljb2xpIEZBUSAoYWQgZXNlbXBpbyAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaXppb25pIHN1bCBWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdTb2xvIGFydGljb2xpIGRpIEZBUSBjb24gdm90aS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaXppb25pIHN1bGxlIHBlcmNlbnR1YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNvbiBwZXJjZW50dWFsZS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnU29sbyBhcnRpY29saSBkaSBGQVEgY3JlYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNyZWF0aSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnUHJvZmlsbyBkaSBSaWNlcmNhIGNvbWUgTW9kZWxsbz8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOdW1lcm8gQXJ0aWNvbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDZXJjYSBhcnRpY29saSBjb24gcGFyb2xhIGNoaWF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQdWJibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVG9ybmEgYWwgbmF2aWdhdG9yZSBkZWxsZSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbmEgY2F0ZWdvcmlhIGRldmUgYXZlcmUgdW4gbm9tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NhdGVnb3JpYSBlc2lzdGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYWdnaW9ybmF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdGVnb3JpYSBGQVEgYWdnaXVudGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdSZWdpc3RybyBkZWxsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnSWwgbm9tZSDDqCBvYmJsaWdhdG9yaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnTGluZ3VhZ2dpbyBlc2lzdGVudGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMaW5ndWFnZ2lvIEZBUSBhZ2dpb3JuYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnTGluZ3VhZ2dpbyBGQVEgYWdnaXVudG8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1VsdGltbyBhZ2dpb3JuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBpIGRpbmFtaWNpIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZXNzdW4gcmlzdWx0YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtZXJvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0dyYXppZSBwZXIgaWwgdHVvIHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSGFpIGdpw6Agdm90YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05lc3N1bmEgdmFsdXRhemlvbmUgc2VsZXppb25hdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdTdGFtcGEgYXJ0aWNvbG8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWNvbGkgRkFRIChudW92aSBjcmVhdGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpY29saSBGQVEgKHJlY2VudGVtZW50ZSBtb2RpZmljYXRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpY29saSBGQVEgKFByaW1pIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdRdWVzdG8gYXJ0aWNvbG8gw6ggdnVvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltaSBhcnRpY29saSBGQVEgY3JlYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1VsdGltaSBhcnRpY29saSBGQVEgYWdnaW9ybmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGFydGljb2xpIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdlc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmJsaWNvJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnVW4gZmlsdHJvIHBlciBsXCdvdXRwdXQgSFRNTCBwZXIgYWdnaXVuZ2VyZSBjb2xsZWdhbWVudGkgYWQgdW5hIHN0cmluZ2EgZGVmaW5pdGEuIExcJ2VsZW1lbnRvIEltbWFnaW5lIHBlcm1ldHRlIGR1ZSB0aXBpIGRpIGluZ3Jlc3NvLiBQcmltbyBpbCBub21lIGRpIHVuXCdpbW1hZ2luZSAoYWQgZXNlbXBpbyBmYXEucG5nKS4gSW4gcXVlc3RvIGNhc28gdmVycsOgIHV0aWxpenphdG8gaWwgcGVyY29yc28gZGVsbGUgaW1tYWdpbmkgZGkgT1RSUy4gTGEgc2Vjb25kYSBwb3NzaWJpbGl0w6Agw6ggcXVlbGxhIGRpIGluc2VyaXJlIGlsIGNvbGxlZ2FtZW50byBhbGxcJ2ltbWFnaW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDb2xvcmUgQ1NTIHBlciBpbCByaXN1bHRhdG8gZGVsIHZvdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUZW1wbyBkaSBkdXJhdGEgbmVsbGEgQ2FjaGUgZGVsbGUgdm9jaSBkaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIENhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdQb3NpemlvbmkgZGVjaW1hbGkgZGVsIHJpc3VsdGF0byBkZWwgdm90by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgUHJlZGVmaW5pdG8gZGVsbGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnTGluZ3VhIHByZWRlZmluaXRhIHBlciBnbGkgYXJ0aWNvbGkgIEZBUSBwZXIgbGEgbW9kYWxpdMOgIHNpbmdvbGEgbGluZ3VhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdEZWZhdWx0IG51bWVybyBkaSBjYXR0ZXJpIGRlbCB0aXRvbG8gZGkgdW5hIEZBUSBkYSB2aXN1YWxpenphcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpdMOgIHByZWRlZmluaXRhIGRlaSB0aWNrZXQgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGF0byBkaSBkZWZhdWx0IHBlciBsYSB2b2NlIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1N0YXRvIFByZWRlZmluaXRvIGRlaSB0aWNrZXQgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1RpcG8gcHJlZGVmaW5pdG8gZGVpIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRpIGFydGljb2xpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0lsIHZhbG9yZSBwcmVkZWZpbml0byBwZXIgaWwgcGFyYW1ldHJvIEF6aW9uZSBwZXIgaWwgZnJvbnRlbmQgcHViYmxpY28uIElsIHBhcmFtZXRybyBBemlvbmUgdmllbmUgdXRpbGl6emF0byBuZWdsaSBzY3JpcHQgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmlzY2Ugc2UgaWwgdGl0b2xvIEZBUSBkb3ZyZWJiZSBlc3NlcmUgY29uY2F0ZW5hdG8gY29uIGxcJ29nZ2V0dG8gZGVsbFwnYXJ0aWNvbG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW4gbW9kdWxvIHBhbm9yYW1pY2EgcGVyIG1vc3RyYXJlIHVuYSB2aXN0YSBhYmJyZXZpYXRhIGRpIHVuYSBsaXN0YSBkaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1biBtb2R1bG8gcGFub3JhbWljYSBwZXIgbW9zdHJhcmUgbGEgdmlzdGEgcGljY29sYSBkaSB1bmEgbGlzdGEgZGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBGQVEgRXhwbG9yZXIgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gU3U6IG1lbm8gcmVjZW50ZSBzdWxsYSBwYXJ0ZSBzdXBlcmlvcmUuIEdpw7k6IHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIEZBUSBwcmVkZWZpbml0byBuZWwgcmlzdWx0YXRvIEZBUSBFeHBsb3JlciBkZWxsXCdpbnRlcmZhY2NpYSBwdWJibGljYS4gU3U6IG1lbm8gcmVjZW50ZSBpbiBjaW1hLiBHacO5OiBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gU3U6IG1lbm8gcmVjZW50ZSBpbiBjaW1hLiBHacO5OiBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIEZBUSBwcmVkZWZpbml0byBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgcHViYmxpY2EuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXNpYmlsaSBuZWxsYSByaWNlcmNhIEZBUS4gUXVlc3RhIG9wemlvbmUgbm9uIGhhIGVmZmV0dG8gbmVsbGEgcG9zaXppb25lIGRlbGxhIGNvbG9ubmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pc2NlIGRvdmUgdmVycsOgIHZpc3VhbGl6emF0byBpbCBjb2xsZWdhbWVudG8gXCdJbnNlcmlzY2kgRkFRXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXppb25lIGRlbCBjYW1wbyB0ZXN0byBsaWJlcm8gZGVsbGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0VsaW1pbmEgcXVlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWNhIHF1ZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FiaWxpdGEgcGnDuSBsaW5ndWUgbmVsIG1vZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0FiaWxpdGEgbWVjY2FuaXNtbyBkaSB2b3RvIG5lbCBtb2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0VzcGxvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnQ2FtcG80JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0NhbXBvNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcG8gcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdTdG9yaWNvIGRpIHF1ZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjY2UgZG92ZSBsYSByaWNlcmNhIHJhcGlkYSBkb3ZyZWJiZSBlc3NlcmUgdmlzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdSZWdpc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVsbGEgbGluZ3VhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0NvbGxlZ2EgdW5cJ2FsdHJvIG9nZ2V0dG8gYSBxdWVzdG8gb2dnZXR0byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOdW92byBhcnRpY29sbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnSSBudW92aSBhcnRpY29saSBGQVEgcmljaGllZG9ubyBhcHByb3ZhemlvbmUgcHJpbWEgZGkgZXNzZXJlIHB1YmJsaWNhdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTnVtZXJvIGRpIGVsZW1lbnRpIG1vc3RyYXRpIG5laSBtb2RpZmljYXRpIGRpIHJlY2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTnVtZXJvIGRpIGVsZW1lbnRpIG1vc3RyYXRpIG5laSBjcmVhdGkgZGkgcmVjZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOdW1lcm8gZGkgZWxlbWVudGkgbW9zdHJhdGkgbmVsbGEgZnVuemlvbmFsaXTDoCBwcmluY2lwYWxpIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1N0YW1wYSBxdWVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0NvZGEgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkZWdsaSBhcnRpY29saSBkZWxsZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NlcmNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnTW9zdHJhIGFydGljb2xvIEZBUSBjb24gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhIHBlcmNvcnNvIEZBUSBzw6wvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmEgZ2xpIGVsZW1lbnRpIGRlbGxlIHNvdHRvY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYSBpIHByaW5jaXBhbGkgMTAgbmVsbGUgaW50ZXJmYWNjZSBzcGVjaWZpY2F0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYSBsYSB2b3RhemlvbmUgbmVsbGUgaW50ZXJmYWNjZSBzcGVjaWZpY2F0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTaW50b21vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRvcmUgcGVyIGxlIEZBUSwgZXM6IEZBUSMsIEtCIywgTXlGQVEjLiBJbCB2YWxvcmUgcHJlZGVmaW5pdG8gw6ggRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ29ycG8gZGVsIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRlbGxcJ2FydGljb2xvIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ09nZ2V0dG8gZGVsIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRlbGxcJ2FydGljb2xvIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0VsZW1lbnRvIGRlbGxhIGJhcnJhIGRlZ2xpIHN0cnVtZW50aSBwZXIgdW5hIHNjb3JjaWF0b2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXN0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVHjga7mlrDopo/ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfjgq3jg7zjg6/jg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfjgqvjg4bjgrTjg6rjga/lv4XpoIjpoIXnm67jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfmib/oqo0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIOOCq+ODhuOCtOODqueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICfjgqvjg4bjgrTjg6rjgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn44Gv44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn6Kaq44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAn44Gy44Go44Gk5Lul5LiK44Gu5qip6ZmQ44Gu44Kw44Or44O844OX44KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgafpoIXnm67jgavjgqLjgq/jgrvjgrnjgafjgY3jgovmi4XlvZPogIXjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+S4gOimp+OBp+OCs+ODoeODs+ODiOOBqOOBl+OBpuihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC5LiA44Gk5Lul5LiK44GuRkFR6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44KL44GL44CB44G+44Gf44Gv5LuW44Gu44Kr44OG44K044Oq44Gu6Kaq44Kr44OG44K044Oq44Gr44Gq44Gj44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv5Lul5LiL44Gu6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+S7peS4i+OBruOCq+ODhuOCtOODquOBruimquOCq+ODhuOCtOODquOBp+OBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfjgZPjga7oqJjkuovjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVHkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICfjg6/jgqTjg6vjg4njgqvjg7zjg4njgYzliKnnlKjlj6/og73jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn6auY5qmf6IO95qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICfjgrXjg5bjgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn5a2Q44Kr44OG44K044Oq44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICflsaXmrbQ6ICc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfjgrjjg6Pjg7zjg4rjg6vjga7mg4XloLHjgYzjgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIOiogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICflpJroqIDoqp7jgafkvZzmpa3jgpLjgZfjgZ/jgYTloLTlkIjjgIHjgZPjga7poIXnm67jgpLoqK3lrprjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn6KiA6Kqe44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ+iogOiqnuOCkuWJiumZpCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfoqIDoqp7jgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn44GT44Gu6KiA6Kqe44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+OBk+OBruiogOiqnuOCkuWJiumZpOOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguS4gOOBpOS7peS4iuOBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+OBk+OBruiogOiqnuOBr+OAgeS7peS4i+OBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+ioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjmr47jga7oqJjkuovmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnRkFR44OH44O844K/44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+OCreODvOODr+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56WoICjkvosuIDEw44Gr562J44GX44GEIOOBguOCi+OBhOOBryA2MOOCiOOCiuWkp+OBjeOBhCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn44Os44O844OIICjkvosuIDI1JeOBq+etieOBl+OBhCDjgYLjgovjgYTjga8gNzUl44KI44KK5aSn44GN44GEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ+aJv+iqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDntYLmm7TmlrDogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYIgKOS7peWJjS/ku6XlvowpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUemgheebruS9nOaIkOaXpeaZgiAo5pyf6ZaT5oyH5a6aKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUemgheebruWkieabtOaXpeaZgiAo5Lul5YmNL+S7peW+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR6aCF55uu5aSJ5pu05pel5pmCICjmnJ/plpPmjIflrpopJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUeWFqOaWhyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUeaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ+ODl+ODreODleOCoeOCpOODq+mBuOaKnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAn5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfmipXnpajjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICfnibnlrprjga7mipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn5L6LLiAxMCDjgavnrYnjgZfjgYQg44GC44KL44GE44GvIDYwIOOCiOOCiuWkp+OBjeOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn44Os44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfjg6zjg7zjg4jjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ+eJueWumuOBruODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ+S+iy4gMjUl44Gr562J44GX44GEIOOBguOCi+OBhOOBryA3NSXku6XkuIonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVHpoIXnm67lpInmm7TmmYLplpMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJzXjgaTmmJ/jga7jgYbjgaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn5oqV56Wo44Gv44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfmipXnpajjga/jgYLjgorjgb7jgZvjgpPjgILjgZPjga7oqJjkuovjgavmnIDliJ3jga7oqZXkvqHjgpLmipXnpajjgZfjgb7jgZfjgofjgYbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+a3u+S7mOODleOCoeOCpOODq+OCkuODgOOCpuODs+ODreODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyjkuIDpg6jjga5PU+OBq+OBiuOBhOOBpuOBrynkuIvoqJjjga7jg6rjg7Pjgq/jgpLjgqrjg7zjg5fjg7PjgZnjgovjgZ/jgoHjgavjgq/jg6rjg4Pjgq/mmYLjgavjgIFDdHJsIOOBguOCi+OBhOOBryBDbWQg44G+44Gf44GvIFNoaWZ044Kt44O844KS5oq85LiL44GZ44KL5b+F6KaB44GM44KL5aC05ZCI44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn44GT44GuRkFR6aCF55uu44Gv44GK5b2544Gr44Gf44Gh44G+44GX44Gf44GLPyDjgIBGQVHjg4fjg7zjgr/jg7zjg5njg7zjgrnjga7mlLnlloTjgavlvbnnq4vjgabjgb7jgZnjga7jgafjgIHjg6zjg7zjg4bjgqPjg7PjgrDjgavljZTlipvjgY/jgaDjgZXjgYTjgILjgojjgo3jgZfjgY/jgYrpoZjjgYTjgZfjgb7jgZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfjgYLjgb7jgorlvbnjgavnq4vjgZ/jgarjgYvjgaPjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn44Go44Gm44KC5b2544Gr56uL44Gj44GfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICfpoIXnm67jga7kuLvpoYzjgatGQVHjgr/jgqTjg4jjg6vjgpLov73liqDjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn6KiY5LqL44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0ZBUeWFqOaWh+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+iomOS6i+OBqOODquODs+OCr+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnRkFR5YWo5paH44Go44Oq44Oz44Kv44KS5oy/5YWl44GZ44KLJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn6Kmy5b2T44GZ44KL6KiY5LqL44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRkFR5YWo5paH5qSc57Si77yI5L6L77yaIkpvaG4qbiLjgIEiV2lsbCoi77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAn5oqV56Wo6KaP5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICfmipXnpajjgZXjgozjgabjgYTjgotGQVHjga7jgb8uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfjg6zjg7zjg4jopo/liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAn44Os44O844OI44GV44KM44Gm44GE44KLRkFR44Gu44G/Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfkvZzmiJDjgZXjgozjgZ9GQVHpoIXnm67jga7jgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn5pyf6ZaT5YaF44Gr5L2c5oiQ44GV44KM44GfRkFR6aCF55uu44Gu44G/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1NlYXJjaC1Qcm9maWxlLeaknOe0ouODl+ODreODleOCo+ODvOODq+OAgOOCkuODhuODs+ODl+ODrOODvOODiOOBq+OBl+OBvuOBmeOBiz8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcgRkFRIOmgheebruODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ+iomOS6i+OBruOCreODvOODr+ODvOODieaknOe0oic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ0ZBUeOCqOOCr+OCueODl+ODreODvOODqeODvOOBq+aIu+OCiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAn6Kqt5pu444GNKHJ3KeOBruaoqemZkOOBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ+OCq+ODhuOCtOODqklE44Gu5YWl5Yqb44GM5b+F6KaB44Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ+OAjOWQjeWJjeOAjeOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv44GZ44Gn44Gr5a2Y5Zyo44GX44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv44GZ44Gn44Gr5a2Y5Zyo44GX44Gm44GE44G+44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAn44Kr44OG44K044OqSUQg44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfjgqvjg4bjgrTjg6rjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ+aWsOOBl+OBhOOCq+ODhuOCtOODquOBjOi/veWKoOOBleOCjOOBvuOBl+OBn+OAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICfjgqLjgqTjg4bjg6BJRCDjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIOOCuOODo+ODvOODiuODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ+iogOiqnklE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+OAjOWQjeWJjeOAjeOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+OBk+OBruiogOiqnuOBr+ioreWumua4iOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn6KiA6Kqe44GM5pu05paw44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICfoqIDoqp7jgYzov73liqDjgZXjgozjgb7jgZfjgZ/jgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn5pyA57WC5pu05paw5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn57WQ5p6c44GM44GC44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVHjg4rjg7Pjg5Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAn5pyA57WC5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR6aCF55uu5L2c5oiQ5pel5pmCICjku6XliY0v5Lul5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYIgKOacn+mWk+aMh+WumiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHpoIXnm67lpInmm7Tml6XmmYIgKOS7peWJjS/ku6XlvowpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUemgheebruWkieabtOaXpeaZgiAo5pyf6ZaT5oyH5a6aKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAn6LaFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICfku6XkuIonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAn5pyq5rqAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICfku6XkuIsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAn44OV44Kh44Kk44OrSUTjgYzlv4XopoHjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn6KmV5L6h44KS44GE44Gf44Gg44GN44GC44KK44GM44Go44GG44GU44GW44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn44GC44Gq44Gf44Gv44GZ44Gn44Gr6KmV5L6h5riI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn6KmV5L6h44GM6YG45oqe44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfoqJjkuovljbDliLcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICfjgZPjga7mnJ/plpPlhoXjgavkvZzmiJDjgZXjgozjgZ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAn44Ki44Kk44OG44OgSUTjga7lhaXlipvjgYzlv4XopoHjgafjgZnvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ+aWsOedgOiomOS6iyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn5pyA6L+R5pu05paw44GV44KM44Gf6KiY5LqLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ+S4iuS9jTEw5Lu244Gu6KiY5LqLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAn44K/44Kk44OX44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ1JTU+ODleOCoeOCpOODq+OBjOS9nOaIkOOBp+OBjeOBvuOBm+OCk++8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFR5YWo5paHKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g6aGn5a6i44Gu44G/ICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDpoaflrqLjga7jgb8gKEZBUeWFqOaWhyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g5YWs6ZaLICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g5YWs6ZaLIChGQVHlhajmlocpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn44GT44Gu6KiY5LqL44Gv56m644Gn44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDlvozjgavkvZzmiJDjgZXjgozjgZ9GQVHpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA5b6M44Gr5pu05paw44GV44KM44GfRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgRkFR6aCF55uuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ+OCs+ODs+ODhuODs+ODhOOCv+OCpOODlyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn5YaF6YOo5ZCRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo5ZCRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+WFrOmWiyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ+ODleOCo+ODq+OCv+Wumue+qeOAgC3lrprnvqnjgZXjgozjgZ/mloflrZfliJfvvIhzdHJpbmfvvInjgavjg6rjg7Pjgq/jgpLov73liqDjgZnjgotodG1s44Ki44Km44OI44OX44OD44OILSAg44Ko44Os44Oh44Oz44OI44O744Kk44Oh44O844K444Gv44CBMueorumhnuOBruOCpOODs+ODl+ODg+ODiOOBjOWPr+iDveOBp+OBmeOAgjHjgaTnm67jgIHjgqTjg6Hjg7zjgrjjga7lkI3liY3jgafjgZkgKOS+iy4gZmFxLnBuZynjgILjgZPjga7loLTlkIjjgIFPVFJT44Kk44Oh44O844K444O744OR44K544GM5L2/55So44GV44KM44G+44GZ44CCMuOBpOebruOAgeOCpOODoeODvOOCuOOBq+ODquODs+OCr+OCkuaMv+WFpeOBmeOCi+OBk+OBqOOBjOWPr+iDveaAp+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdGQVEg6KiY5LqL44KS6L+95Yqg44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6KmV5L6h44Gu57WQ5p6c6KGo56S644KI44GG44Gu44Kr44Op44O877yI44K544K/44Kk44Or44K344O844OI77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdGQVHpoIXnm67jgYvjgonpm6LohLHjgZnjgovjgb7jgafjga7jgq3jg6Pjg4Pjgrfjg6XmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+OCq+ODhuOCtOODquODvOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn6aGn5a6i55SoRkFR44Gu6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ+mhp+WuoueUqEZBUeOBruips+e0sOihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ+mhp+WuoueUqEZBUeOBruaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAn6aGn5a6i55SoRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfmipXnpajjga7ntZDmnpzjga7lsI/mlbDngrnku6XkuIvjga7moYHmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+aXouWumuOBruOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn6KaP5a6a44Gu6KiA6Kqe77yI5Y2Y5LiA6KiA6Kqe44Oi44O844OJ44Gn6YGL55So5pmC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ+ODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBleOCjOOCi0ZBUemgheebruOCv+OCpOODiOODq+OBruODh+ODleOCqeODq+ODiOacgOWkp+WApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdGQVHjgbjjga7lj5bjgorovrzjgb/jgpLooYzjgYbjg4HjgrHjg4Pjg4jjga7lhKrlhYjpoIbkvY3jga7ml6LlrprlgKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+iomOS6i+OCqOODs+ODiOODquODvOaZguOBruimj+WumuOBruOCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44G444Gu5Y+W44KK6L6844G/44KS6KGM44GG44OB44Kx44OD44OI44Gu5YSq5YWI6aCG5L2N44Gu5pei5a6a5YCkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUemgheebruaJv+iqjeeUqOODh+ODleOCqeODq+ODiOODgeOCseODg+ODiOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i55So44OR44Op44Oh44O844K/44Gu44OH44OV44Kp44Or44OI5YCk44CC44OR44Op44Oh44O844K/77yIQWN0aW9uPVhYWFhYWO+8ieOBr+OAgeOCueOCr+ODquODl+ODiOOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRkFR44K/44Kk44OI44Or44GM6KiY5LqL44Gu5Lu25ZCN44Gr6YCj57WQ44GZ44KL44GL44Gp44GG44GL44KS5a6a576p44GX44G+44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHjgrjjg6Pjg7zjg4rjg6vooajnpLrnlKjjg6Ljgrjjg6Xjg7zjg6vjga7mpoLopoHjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAn57Ch5piT54mIRkFR5LiA6Kan6KGo56S655So44Oi44K444Ol44O844Or44Gu5qaC6KaB44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCue+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdou+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovnlLvpnaLvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjga7ooajnpLrpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflhazplovnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjga7ooajnpLrpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCue+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0ZBUSDmpJzntKLnlLvpnaLjgavooajnpLrjgZXjgozjgotGQVEg5qSc57Si5bGe5oCn44Gu44OH44OV44Kp44Or44OI5YCk44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0ZBUeiomOS6i+OBi+OCieODgeOCseODg+ODiOOBuOOBruaMv+WFpeOBleOCjOOCi+aDheWgseOCkuWumue+qeOBmeOCi+OAguOAjEZBUeOBmeOBueOBpuOAjeOBq+OBr+ODhuOCreOCueODiOODu+a3u+S7mOODu+WPiuOBs+OCpOODs+ODqeOCpOODs+OBrueUu+WDj+OBjOWQq+OBvuOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfjg4Djg4Pjgrfjg6Xjg5zjg7zjg4njga7jg5Djg4Pjgq/jgqjjg7Pjg4njg5Hjg6njg6Hjg7zjgr/jgpLlrprnvqnjgILjgIxMaW1pdCDjg6rjg5/jg4Pjg4jjgI3jga/mqJnmupbjgafooajnpLrjgZXjgozjgovjgqjjg7Pjg4jjg6rjg7zjgpLlrprnvqnjgZfjgb7jgZnjgILjgIxHcm91cCDjgrDjg6vjg7zjg5fjgI3jga/jg5fjg6njgrDjgqTjg7Pjgbjjga7jgqLjgq/jgrvjgrnjgpLliLbpmZDjgZfjgb7jgZnjgIIo5L6LLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMinjgILjgIxEZWZhdWx044CA44OH44OV44Kp44Or44OI44CN44Gv44OX44Op44Kw44Kk44Oz44GM5qiZ5rqW44Gn5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44CB44Om44O844K244O844GM5omL5YuV44Gn5pyJ5Yq544Gr44GZ44KL5b+F6KaB44GM44GC44KL44GL44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+aLheW9k+iAheeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gn44Gu6KGo56S66aCF55uu44Gu6Kit5a6a44CC44GT44Gu6Kit5a6a44Gr44KI44Gj44Gm6aCF55uu44Gu5Lim44Gz6aCG44KS5Yi25b6h44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRkFR44Oq44Oz44Kv44GM44Gp44GT44Gr6KGo56S644GV44KM44KL44GL5a6a576p44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0ZBUeOBruODleODquODvOODhuOCreOCueODiOODleOCo+ODvOODq+ODieOBruWumue+qeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjgpLliYrpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHov73liqDnlLvpnaLjgafooajnpLrjgZXjgozjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njgIIg6YG45oqe5Y+v6IO944Gq6Kit5a6a5YCkOiAwID0g54Sh5Yq5LCAxID0g5pyJ5Yq5LCAyID0g5pyJ5Yq544GL44Gk5b+F6aCI6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUee3qOmbhueUu+mdouOBp+ihqOekuuOBleOCjOOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOAgiDpgbjmip7lj6/og73jgaroqK3lrprlgKQ6IDAgPSDnhKHlirksIDEgPSDmnInlirksIDIgPSDmnInlirnjgYvjgaTlv4XpoIjpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeOCquODvOODkOODvOODk+ODpeODvOeUu+mdouOBp+ihqOekuuOBleOCjOOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOAgiDpgbjmip7lj6/og73jgaroqK3lrprlgKQ6IDAgPSDnhKHlirksIDEgPSDmnInlirksIDIgPSDmnInlirnjgYvjgaTlv4XpoIjpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHov73liqDnlLvpnaLjgafooajnpLrjgZXjgozjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njgIIg6YG45oqe5Y+v6IO944Gq6Kit5a6a5YCkOiAwID0g54Sh5Yq5LCAxID0g5pyJ5Yq5LCAyID0g5pyJ5Yq544GL44Gk5b+F6aCI6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR5Y2w5Yi355S76Z2i44Gn6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeWNsOWIt+eUu+mdouOBp+ihqOekuuOBleOCjOOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOAgiDpgbjmip7lj6/og73jgaroqK3lrprlgKQ6IDAgPSDnhKHlirksIDEgPSDmnInlirknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR5Y2w5Yi355S76Z2i44Gn6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR5qSc57Si55S76Z2i44Gn6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSwgMiA9IOacieWKueOBi+OBpOODh+ODleOCqeODq+ODiOihqOekuuWvvuixoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR5qSc57Si55S76Z2i44Gn6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSwgMiA9IOacieWKueOBi+OBpOODh+ODleOCqeODq+ODiOihqOekuuWvvuixoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeaknOe0oueUu+mdouOBp+ihqOekuuOBleOCjOOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOAgiDpgbjmip7lj6/og73jgaroqK3lrprlgKQ6IDAgPSDnhKHlirksIDEgPSDmnInlirksIDIgPSDmnInlirnjgYvjgaTjg4fjg5Xjgqnjg6vjg4jooajnpLrlr77osaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIOOCquODvOODkOODvOODk+ODpeODvOOAjFPjg5Xjgqnjg7zjg57jg4Pjg4jjgI3jgafooajnpLrjgZXjgozjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njgIIg6YG45oqe5Y+v6IO944Gq6Kit5a6a5YCkOiAwID0g54Sh5Yq5LCAxID0g5pyJ5Yq5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEg44K644O844Og44K544Kv44Oq44O844Oz44Gn6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR44K644O844Og55S76Z2i44Gr6KGo56S644GV44KM44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44CCIOmBuOaKnuWPr+iDveOBquioreWumuWApDogMCA9IOeEoeWKuSwgMSA9IOacieWKuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeOCuuODvOODoOeUu+mdouOBq+ihqOekuuOBleOCjOOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOAgiDpgbjmip7lj6/og73jgaroqK3lrprlgKQ6IDAgPSDnhKHlirksIDEgPSDmnInlirknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn5aSa6KiA6Kqe44KS5pyJ5Yq544Gr44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+ipleS+oeOBruapn+iDveOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ+S4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRkFRIOOBruWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdGQVEg44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqcoUynjga7ooajnpLrmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHkuIDopqcoUynjga7ooajnpLrmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUSDjga7ooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFR44K444Oj44O844OK44Or5LiA6KanKFMp44GuMeODmuODvOOCuOavjuOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnRkFR5LiA6KanKFMp44GuMeODmuODvOOCuOavjuOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gr44GK44GR44KL44CBRkFR5qSc57Si44Gu44OQ44OD44Kv44Ko44Oz44OJ44Or44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZpZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGaWVsZDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44Gu6KiY5LqL44Gu5om/6KqN44Gu44Gf44KB44Gu44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjga7lsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebruOBmeOBueOBpuOBruWQjeensCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+OCr+OCpOODg+OCr+aknOe0ouOBjOihqOekuuOBleOCjOOCi+eUu+mdoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn44K444Oj44O844OK44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfoqIDoqp7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn44GT44GuRkFR6KiY5LqL44Gr5LuW44Kq44OW44K444Kn44Kv44OI44KS6Zai6YCj5LuY44GR44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+WIqeeUqOWPr+iDveOBquOCueODhuODvOODiOOCv+OCpOODl+ODquOCueODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlLvpnaLjgafliKnnlKjlj6/og73jgarjgrnjg4bjg7zjg4jjgr/jgqTjg5fjg6rjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBp+WIqeeUqOWPr+iDveOBquOCueODhuODvOODiOOCv+OCpOODl+ODquOCueODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHkuIDopqfjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovnlLvpnaLjga5GQVHkuIDopqfjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeOCuOODo+ODvOODiuODq+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aknOe0oue1kOaenOOBqOOBl+OBpuaLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ihqOekuuOBleOCjOOCi0ZBUemgheebruOBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aknOe0oue1kOaenOOBqOOBl+OBpumhp+WuoueUu+mdouOBp+ihqOekuuOBleOCjOOCi0ZBUemgheebruOBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmpJzntKLntZDmnpzjgajjgZfjgablhazplovnlLvpnaLjgafooajnpLrjgZXjgozjgotGQVHpoIXnm67jga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEgRXhwbG9yZXLjgafooajnpLrjgZXjgozjgovku7blkI3jga5GQVHoqJjkuovjga7mnIDlpKfjgrXjgqTjgronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEgRXhwbG9yZXIg44Gr6KGo56S644GV44KM44KL44CMRkFR6aCF55uu44Gu5Lu25ZCN44CN44Gu5pyA5aSn5YCk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSBFeHBsb3JlciDjgavooajnpLrjgZXjgozjgovjgIxGQVHpoIXnm67jga7ku7blkI3jgI3jga7mnIDlpKflgKTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIOaknOe0ouOBp+ihqOekuuOBleOCjOOCi+S7tuWQjeOBrkZBUeiomOS6i+OBruacgOWkp+OCteOCpOOCuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEg5qSc57SiIOOBq+ihqOekuuOBleOCjOOCi+OAjEZBUemgheebruOBruS7tuWQjeOAjeOBruacgOWkp+WApOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIOaknOe0oiDjgavooajnpLrjgZXjgozjgovjgIxGQVHpoIXnm67jga7ku7blkI3jgI3jga7mnIDlpKflgKTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSDjgrjjg6Pjg7zjg4rjg6vjgafooajnpLrjgZXjgozjgovku7blkI3jga5GQVHoqJjkuovjga7mnIDlpKfjgrXjgqTjgronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gr44GK44GE44Gm44CB44K344On44O844OI44O744OB44Kx44OD44OI5qSc57Si44Gu44Gf44KB44GuaHRtbCBPcGVuU2VhcmNo44OX44Ot44OV44Kj44O844Or44KS55Sf5oiQ44GZ44KL44Oi44K444Ol44O844Or44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfmlrDopo8gRkFRIOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfmlrDopo8gRkFRIOmgheebruOCkuWFrOmWi+OBmeOCi+OBq+OBr+S6i+WJjeOBq+aJv+iqjeOBleOCjOOCi+OBk+OBqOOBjOW/heimgeOBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafooajnpLrjgZXjgozjgosgRkFRIOmgheebruOBruaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55So44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn6KGo56S644GV44KM44KLIEZBUSDpoIXnm67jga7mlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So44Kk44Oz44K/44O844OV44Kn44Kk44K5IOaknOe0oue1kOaenOihqOekuuOBruWQhOeUu+mdouOBp+ihqOekuuOBleOCjOOCiyBGQVEg6aCF55uu44Gu5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44Gu5qSc57Si57WQ5p6c6KGo56S644Gu5ZCE55S76Z2i44Gn6KGo56S644GV44KM44KLIEZBUSDpoIXnm67jga7mlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfjgIzmnIDov5Hjga7lpInmm7TjgI3jgavkvZXku7bjgb7jgafooajnpLrjgZnjgovjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfjgIzmnIDmlrDjga7mlrDopo/kvZzmiJDjgI3jgavkvZXku7bjgb7jgafooajnpLrjgZnjgovjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfjgIzjg4jjg4Pjg5cxMOiomOS6i+OAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqfjga7jg5rjg7zjgrjmjIflrprnlKjjga7jg5Hjg6njg6Hjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeamguimgeOBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkuWNsOWItyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ+WFrOmWi0ZBUeOBruihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAn5YWs6ZaLRkFR44Gu6Kmz57Sw44KS6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ+WFrOmWi0ZBUeOBruaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ+WFrOmWi0ZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfoqJjkuovmib/oqo3jgq3jg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfoqZXkvqHnjofjgILjgq3jg7zjga/jgIHjg5Hjg7zjgrvjg7Pjg4jjgafmjIflrprjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFR44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQWdlbnRGQVFab29t44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruODh+ODleOCqeODq+ODiOmrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ3VzdG9tZXJGQVFab29tICjlj4rjgbMgUHVibGljRkFRWm9vbSnjgafooajnpLrjgZXjgozjgovjgqTjg7Pjg6njgqTjg7NIVE1M44Gu44OH44OV44Kp44Or44OI6auY44GVKOODlOOCr+OCu+ODq+ihqOiomCnjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQWdlbnRGQVFab29t44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruacgOWkp+OBrumrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ3VzdG9tZXJGQVFab29tICjlj4rjgbMgUHVibGljRkFRWm9vbSnjgafooajnpLrjgZXjgozjgovjgqTjg7Pjg6njgqTjg7NIVE1M44Gu5pyA5aSn44Gu6auY44GVKOODlOOCr+OCu+ODq+ihqOiomCnjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ+WFrOmWi+OBleOCjOOBn0ZBUeiomOS6i+OBrkFnZW50RkFRWm9vbVNtYWxs44GrIkZBUeOBruODhuOCreOCueODiOOAgeOBiuOCiOOBs+ODquODs+OCr+OCkuaMv+WFpSIgLyAiRkFR44Gu44GZ44G544Gm44CB44GK44KI44Gz44Oq44Oz44Kv44KS5oy/5YWlIiDjg5zjgr/jg7PjgpLooajnpLrjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ0FnZW50RkFRWm9vbVNtYWxs44GrIkZBUeOBruODhuOCreOCueODiOOCkuaMv+WFpSIgLyAiRkFR44Gu44GZ44G544Gm44KS5oy/5YWlIuODnOOCv+ODs+OCkuihqOekuuOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfoqJjkuovjgadIVE1M44K/44Kw44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfoqJjkuovjga7jg5HjgrnjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfjgrXjg5bjgqvjg4bjgrTjg6rjg7zjga7jg4jjg5Tjg4Pjgq/jgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+acgOaWsOOBruWkieabtOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOaLheW9k+iAheeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfmnIDmlrDjga7mlrDopo/kvZzmiJDjgpLooajnpLrjgZnjgovnlLvpnaLvvIjmi4XlvZPogIXnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ODiOODg+ODlzEw44KS6KGo56S644GZ44KL55S76Z2i77yI5ouF5b2T6ICF55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ipleS+oeOCkuihqOekuuOBmeOCi+eUu+mdou+8iOaLheW9k+iAheeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gq44Gp44Gu44K644O844Og44O744OT44Ol44O844Gn44CBRkFR44KS5LuW44Gu44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44Gb44KL44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844GnRkFR5YmK6Zmk44Gu44Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844GnRkFR44Gu5bGl5q2044Gu44Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Djg5Pjg6Xjg7zjgadGQVHnt6jpm4bjga7jg6rjg7Pjgq/jgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+OAjOaIu+OCi+OAjeOBruODquODs+OCr+OCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp0ZBUeOCkuWNsOWIt+ODquODs+OCr+OCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ+ino+axuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAn55eH54q2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ+ODhuOCreOCueODiOOBruOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRkFR55So44Gu6K2Y5Yil5a2QIOS+iy4gRkFRIywgS0IjLCBNeUZBUSMuIOODh+ODleOCqeODq+ODiOOBp+OBryBGQVEjIOOBqOOBquOBo+OBpuOBhOOBvuOBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhOb3JtYWzigJnjg6rjg7Pjgq/jg7vjgr/jgqTjg5fjgpLkvb/nlKjjgZfjgabjgIHigJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgYzku5bjga7igJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgajjg6rjg7Pjgq/jgZXjgozjgovjgojjgYbjgavjgIHlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhQYXJlbnRDaGlsZOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhOb3JtYWzigJnjg6rjg7Pjgq/jg7vjgr/jgqTjg5fjgpLkvb/nlKjjgZfjgabjgIHigJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgYzku5bjga7igJhUaWNrZXTigJnjgqrjg5bjgrjjgqfjgq/jg4jjgajjg6rjg7Pjgq/jgZXjgozjgovjgojjgYbjgavjgIHlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhQYXJlbnRDaGlsZOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmFRpY2tldOKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFR5om/6KqN44OB44Kx44OD44OI55So44CA44OB44Kx44OD44OI5pys5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVHmib/oqo3jg4HjgrHjg4Pjg4jnlKjjgIDjg4HjgrHjg4Pjg4jku7blkI0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfjgrfjg6fjg7zjg4jjgqvjg4Pjg4jjga7jgZ/jgoHjga7jg4Tjg7zjg6vjg5Djg7zjg7vjgqLjgqTjg4bjg6DjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCAo6aGn5a6iKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YaF6YOoICjmi4XlvZPogIUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRhIGt1bmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZW5nZXNhaGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQYWRhbSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQXVkaXQgS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWIta2F0ZWdvcmkgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTaWxhIHBpbGloIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IHBlcm1pbnRhYW4ga3VtcHVsYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdLdW1wdWxhbiBlamVuIGJvbGVoIG1lbmdha3NlcyBhcnRpa2VsIGRhbGFtIGthdGVnb3JpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0FrYW4gZGlwYXBhcmthbiBzZWJhZ2FpIGtvbWVuIGRhbGFtIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbSBrYXRlZ29yaSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGthdGVnb3JpIGluaS4gSWEgZGlndW5ha2FuIGRhbGFtIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGF0aWtlbCBGQVEgZGFuL2F0YXUgYWRhbGFoIGlidWJhcGEga2VwYWRhIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGthdGVnb3JpIGxhaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnS2F0ZWdvcmkgaW5pIGRpZ3VuYWthbiBkYWxhbSBhdGlrZXQgRkFRIGJlcmlrdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnS2F0ZWdvcmkgaW5pIGFkYWxhaCBpYnViYXBhIGtlcGFkYSBzdWIta2F0ZWdvcmkgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFtIGFydGlrZWwgRkFRIGluaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQ2FyaWFuIFBhbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIGFkYWxhaCBkaWJlbmFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdDYXJpYW4gVGVycGVyaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViLWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlrZXQgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnVGlhZGEgc3ViLWthdGVnb3JpIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdTZWphcmFoIHVudHVrJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ1RpYWRhIGRhdGEgSnVybmFsIEZBUSBkaXRlbXVpLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIEJhaGFzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnZ3VuYWthbiBjaXJpIGluaSBqaWthIGFuZGEgbWFodSB1bnR1ayBiZWtlcmphIGRlbmdhbiBwZWxiYWdhaSBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnVGFtYmFoIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdQYWRhbSBiYWhhc2EgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnVGFtYmFoIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnQXVkaXQgYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFta2FuIGJhaGFzYSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgYm9sZWggbWVtYWRhbSBiYWhhc2EgaW5pLiBJYSBkaWd1bmFrYW4gc2VrdXJhbmcta3VyYW5nbnlhIHNhdHUgYXJ0aWtlbCBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnQmFoYXNhIGluaSBkaWd1bmFrYW4gZGFsYW0gQXJ0aWtlbCBGQVEgeWFuZyBiZXJpa3V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQXR1cmFuIGtvbnRla3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWtlbCBGQVEgcGVyIG11a2Egc3VyYXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnVGlhZGEgZGF0YSBGQVEgZGl0ZW11aS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS2F0YSBrdW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVW5kaSAoY29udG9oOiBCZXJzYW1hYW4gMTAgYXRhdSBsZWJpaCBiZXNhciBkYXJpcGFkYSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnS2FkYXIgKGNvbnRvaDogQmVyc2FtYWFuIDI1JSBhdGF1IGxlYmloIGJlc2FyIGRhcmlwYWRhIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdEaWx1bHVza2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpdWJhaCBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnV2FrdHUgY2lwdGEgYXJ0aWtlbCBGQVEgKHNlYmVsdW0vc2VsZXBhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnV2FrdHUgY2lwdGEgYXJ0aWtlbCBGQVEgKGRpIGFudGFyYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdXYWt0dSBwZXJ1YmFoYW4gYXJ0aWtlbCBGQVEgKHNlYmVsdW0vc2VsZXBhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnV2FrdHUgcGVydWJhaGFuIGFydGlrZWwgRkFRIChkaSBhbnRhcmEpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUVRla3NQZW51aCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0NhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQaWxpaGFuIHByb2ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnVGlhZGEgdGV0YXBhbiB1bmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnVW5kaSBzcGVzaWZpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdjb250b2g6IFNhbWEgZGVuZ2FuIDEwIGF0YXUgTGViaWggYmVzYXIgZGFyaXBhZGEgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0thZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdUaWFkYSB0ZXRhcGFuIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdLYWRhciBzcGVzaWZpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2NvbnRvaDogU2FtYSBkZW5nYW4gMjUlIGF0YXUgbGViaWggYmVzYXIgZGFyaXBhZGEgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnV2FrdHUgY2lwdGEgYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdXYWt0dSBwZXJ1YmFoYW4gYXJ0aWtlbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdNZW5pbGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGFyaXBhZGEgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1VuZGlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdUaWFkYSB1bmRpYW4gZGl0ZW11aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ1RpYWRhIHVuZGlhbiBkaXRlbXVpISBKYWRpbGFoIG9yYW5nIHBlcnRhbWEgbWVuaWxhaSBhcml0bCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTXVhdCB0dXJ1biBsYW1waXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1VudHVrIG1lbWJ1a2EgcGF1dGFuIGRhbGFtIGtldGVyYW5nYW4gYmxvayBiZXJpa3V0LCBhbmRhIG11bmdraW4gcGVybHUgbWVuZWthbiBrZWt1bmNpIEN0cmwgYXRhdSBDbWQgYXRhdSBTaGlmdCBzZW1hc2EgbWVuZWthbiBwYXV0YW4gKGJlcmdhbnR1bmcga2VwYWRhIHBlbGF5YXIgZGFuIHNpc3RlbSBvcGVyYXNpIGFuZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0JlcmFwYSBiYW55YWsgYXJpa2VsIGluaSBtZW1iYW50dT8gU2lsYSBiZXJpIGthbWkgcGVuaWxhaWFuIGFuZGEgZGFuIGJhbnR1IHVudHVrIG1lbmluZ2thdGthbiBwYW5na2FsYW4gZGF0YSBGQVEuIFRlcmltYSBLYXNpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdUaWRhayBtZW1iYW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdTYW5nYXQgbWVtYmFudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ1RhbWJhaCB0YWp1ayBGQVEgcGFkYSBzdWJqZWsgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdNYXN1ayBUZWtzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdNYXN1a2thbiBGQVEgcGVudWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnTWFzdWsgcGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTWFzdWsgVGVrcyBGQVEgJiBQYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ01hc3Vra2FuIEZBUSBwZW51aCBkYW4gcGF1dGFuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnVGlhZGEgYXJ0aWtlbCBGQVEgZGlqdW1wYWkuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQ2FyaWFuIFRla3MgcGVudWggZGFsYW0gYXJ0aWtlbCBGQVEgKGNvbnRvaC4gIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpY2lwdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnSGFueWEgYXJ0aWtlbCBGQVEgeWFuZyBkaWNpcHRhIGRpIGFudGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdDYXJpYW4gYmVycHJvZmlsIHNlYmFnYWkgdGVtcGxhdD8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOb21ib3IgQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0NhcmlhbiB1bnR1ayBhcnRpa2VsIGRlbmdhbiBrZWt1bmNpIHBlcmthdGFhbic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdCYWxpayBrZXBhZGEgcGVuZXJva2EgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdBbmRhIHBlcmx1a2FuIGtlaXppbmFuIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnVGlhZGEga2F0ZWdvcmkgeWFuZyBkaWp1bXBhaSBkaW1hbmEgcGVuZ2d1bmEgcGVybHUgYWRhIGtlaXppbmFuIGJhY2EvdHVsaXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ1RpYWRhIGJhaGFzYSBsYXppbSB5YW5nIGRpanVtcGFpIGRhbiB0aWRhayBib2xlaCBtZW1idWF0IHlhbmcgYmFydS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQZXJsdWthbiBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaSBwZXJsdSBtZW1wdW55YWkgbmFtYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ2thdGVnb3JpIGluaSBzdWRhaCB3dWp1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdLYXRlZ29yaSBpbmkgdGVsYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgQ2F0ZWdvcnlJRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnVGlkYWsgbWFtcHUgdW50dWsgbWVtYnVhbmcga2F0ZWdvcmkgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaWtlbWFza2luaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ2thdGVnb3JpIEZBUSBkaXRhbWJhaCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgSXRlbUlEIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdBbmRhIHRpZGFrIG1lbXB1bnlhaSBrZWl6aW5hbiB1bnR1ayBrYXRlZ29yaSBpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ3RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGFydGlrZWwgRkFRICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdDYXRlZ29yeUlEICVzIGl0dSB0aWRhayBzYWguJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBib2xlaCBtZW51bmp1a2thbiBzZWphcmFoLCBzZWJhZ2FpIHRpYWRhIEl0ZW1JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdTZWphcmFoIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ2p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnUGVybHVrYW4gcGlsaWhhbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBjb25maWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAncGlsaWhhbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBjb25maWcgbWVtZXJsdWthbiB1bnR1ayBtZW5qYWRpIHN1YXR1IHJ1aiBIQVNIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ1RpYWRhIHBpbGloYW4gY29uZmlnIGRpanVtcGFpIHVudHVrIHBhbmRhbmdhbiAiJXMiISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdUaWFkYSBMYW5ndWFnZUlEIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtYSBkaXBlcmx1a2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0JhaGFzYSBpbmkgc3VkYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGJhaGFzYSAlcyBpdHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0JhaGFzYSBGQVEgZGlrZW1hc2tpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpdGFtYmFoISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdLZW1hc2tpbmkga2FsaSB0ZXJha2hpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdNZWRhbiBEaW5hbWlrIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgJXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdUaWRhayBib2xlaCBtZW11YXRrYW4gT2JqZWtCYWhhc2EhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbWJvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnUGVydHVrYXJhbiBBa2hpciBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gQ2lwdGEgTWFzYSAoc2ViZWx1bS9zZWxlcGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgSXRlbSBDaXB0YSBNYXNhIChkaSBhbnRhcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gVWJhaCBNYXNhIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBJdGVtIFViYWggTWFzYSAoZGkgYW50YXJhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdTYW1hIERlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdsZWJpaCBCZXNhciBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnbGViaWggQmVzYXIgZGFyaXBhZGEgc2FtYSBkZW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTGViaWggS2VjaWwgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0xlYmloIEtlY2lsIGRhcmlwYWRhIHNhbWEgZGVuZ2FuICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdQZXJsdWthbiBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RlcmltYSBrYXNpaCB1bnR1ayB1bmRpYW4gYW5kYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdBbmQgc3VkYWggbWVuZ3VuZGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnVGlhZGEga2FkYXIgZGlwaWxpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnTWVrYW5pc21hIG1lbmd1bmRpIHRpZGFrIGRpYm9sZWhrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnS2FkYXIgdW5kaWFuIHRpZGFrIGRpdGFrcmlma2FuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIEZBUSBkaWNldGFrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnRGljaXB0YSBkaSBhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnUGVybHVrYW4gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbCBGQVEgKGJhcnUgZGljaXB0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWwgRkFRIChiYXJ1IGRpdWJhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbCBGQVEgKDEwIHRlcmJhaWspJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgSmVuaXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdKZW5pcyBtZXN0aSBhbnRhcmEgTGFzdENyZWF0ZSBhdGF1IExhc3RDaGFuZ2UgYXRhdSBUb3AxMCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdUaWRhayBib2xlaCBtZW5jaXB0YSBmYWlsIFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKFRla3NwZW51aEZBUSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIFBlbGFuZ2dhbiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUGVsYW5nZ2FuIChUZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFVtdW0gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBVbXVtICh0ZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQXJ0aWtlbCBpbmkga29zb25nISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdNZW5jaXB0YSBhcml0a2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0tlbWFza2luaSBBcnRpa2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdBcml0a2VsIEZBUSAxMCB0ZXJiYWlrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnZGFsYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2x1YXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICd1bXVtJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnQXNpbmdhbiB1bnR1ayBoYXNpbCBrZWx1YXJhbiB1bnR1ayBtZW5hbWJhaCBwYXV0YW4gZGliZWxha2FuZyBqYXJpbmdhbiBzdHJpbmcuIEVsZW1lbiBnYW1iYXIgZGliZW5hcmthbiBkdWEgaW5wdXQuIHBlcnRhbWEgbmFtYSBnYW1iYXIgdGVyc2VidXQgKGZhcS5wbmcpLiBEYWxhbSBrZXMgaW5pLCBqYWxhbiBnYW1iYXIgT1RSUyBha2FuIGRpZ3VuYWthbi4ga2VkdWFueWEga2VtdW5na2luYW4gYWRhbGFoIHVudHVrIG1lbWFzdWtrYW4gcGF1dGFuIHBhZGEgZ2FtYmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICd0YW1iYWggYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdXYXJuYSBDU1MgdW50dWsga2VwdXR1c2FuIHVuZGlhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1dha3R1IGNhY2hlIHVudHVrIG1lbmluZ2dhbGthbiBiYWdpIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdDZXRha2FuIEZBUSBQZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWnVtIEZBUSBQZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdjYXJpYW4gRkFRIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIFBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnVGl0aWsgcGVycHVsdWhhbiBkYXJpcGFkYSBrZXB1dHVzYW4gdW5kaWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnS2F0ZWdvcmkgbmFtYSBzZWRpYSBhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdCYWhhc2Egc2VkaWEgYWRhIHVudHVrIGFydGlrZWwgRkFRIHBhZGEgc2F0dSBtb2QgYmFoYXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRldGFwYW4gYXdhbCBkYXJpcGFkYSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnS2V1dGFtYWFuIHNlZGlhIGFkYSB0aWtldCB1bnR1ayBwZW5nZXNhaGFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnS2VhZGFhbiBzZWRpYSBhZGEgdW50dWsga2VtYXN1a2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0tlYWRhYW4gc2VkaWEgYWRhIHRpa2V0IHVudHVrIHBlbmdlc2FoYW4gZGFyaXBhZGEgYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0plbmlzIHRldGFwYW4gYXdhbCB0aWtldCB1bnR1ayBrZWx1bHVzYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdOaWxhaSBzZWRpYSBhZGEgdW50dWsgdGluZGFrYW4gcGFyYW1ldGVyIGtlcGFkYSBkZXBhbmFraGlyIHVtdW0uIFRpbmRha2FuIHBhcmFtZXRlciBkaWd1bmFrYW4gZGFsYW0gc2tyaXAgc2lzdGVtIHRlcnNlYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnVGFrcmlma2FuIFRpbmRha2FuIGRpbWFuYSBidXRhbmcgdGV0YXBhbiBpdHUgYWRhIGRhbGFtIHdpZGdldCBvYmplayBiZXJzYW1idW5nIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFNpbGEgcGFzdGlrYW4geWFuZyBUaW5kYWthbiBpbmkgcGVybHUgZGlkYWZ0YXJrYW4geWFuZyBiZXJpa3V0IGZhaWwtZmFpbCBKUyBkYW4gQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGppa2EgdGFqdWsgRkFRIHBlcmx1IGRpcmFuZ2thaWthbiBrZXBhZGEgYXJ0aWtlbCBzdWJqZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBkaW1hbmEga29sdW0gZGl0dW5qdWtrYW4gZGFsYW0gd2lkZ2V0IEZBUS1GQVEgYmVyc2FtYnVuZyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RhOiBIYW55YSBzaWZhdC1zaWZhdCBGQVEgZGFuIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIHlhbmcgZGliZW5hcmthbiB1bnR1ayBEZWZhdWx0Q29sdW1ucy4gS2VtdW5na2luYW4gdGV0YXBhbjogMCA9IERpbnlhaGFrdGlmLCAxID0gQWRhLCAyID0gQWt0aWYgc2VjYXJhIGxhemltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIGxpaGF0IHNlbXVsYSBtb2R1bCB1bnR1ayBwYXBhciBwYXBhcmFuIGtlY2lsIGRhcmkgSnVybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBsaWhhdCBzZW11bGEgbW9kdWwgdW50dWsgcGFwYXIgcGFwYXJhbiBrZWNpbCBkYXJpIHNlbmFyYWkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgaW50ZXJmYWNlIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBpbnRlcmZhY2UgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGludGVyZmFjZSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGVqZW4gaW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHRldGFwYW4gYXdhbCBzaWZhdCBGQVEgdW50dWsgc3VzdW5hbiBGQVEgZGFsYW0gcGVuZXJva2EgRkFRIGFudGFyYSBtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdGV0YXBhbiBhd2FsIHNpZmF0IEZBUSB1bnR1ayBzdXN1bmFuIEZBUSBkYWxhbSBwZW5lcm9rYSBGQVEgYW50YXJhIG11a2Egb3JhbmcgYXdhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBGQVEgbGFsYWkgZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIGJhZ2kgYW50YXJhIG11a2EgZWplbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJraW5pIGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIEZBUSBsYWxhaSBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgYmFnaSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVya2luaSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggRkFRIGxhbGFpIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBiYWdpIGFudGFyYSBtdWthIG9yYW5nIGF3YW0uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVya2luaSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggbGFsYWkgRkFRIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIGxhbGFpIEZBUSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBsYWxhaSBGQVEgaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBsYWxhaSBkaXR1bmp1a2thbiBGQVEgYXRyaWJ1dCBjYXJpYW4gdW50dWsgc2tyaW4gRkFRIGNhcmlhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIG1ha2x1bWF0IHlhbmcgYWthbiBkaW1hc3Vra2FuIGRhbGFtIHRpa2V0IGJlcmRhc2Fya2FuIEZBUS4gIkZBUSBQZW51aCIgdGVybWFzdWsgdGVrcywgbGFtcGlyYW4gZGFuIGltZWogc2ViYXJpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBhcmFtZXRlciB1bnR1ayBiYWNrZW5kIHBhcGFuIHBlbXVrYS4gIkhhZCIgbWVudGFrcmlma2FuIGJpbGFuZ2FuIHBlbnllcnRhYW4gZGlwYXBhcmthbiBzZWNhcmEgbGFsYWkuICJLdW1wdWxhbiIgZGlndW5ha2FuIHVudHVrIG1lbnlla2F0IGFrc2VzIGtlcGFkYSBwbHVnaW4gKGNvbnRvaDogS3VtcHVsYW46IGFkbWluOyBncm91cDEgOyBncm91cDIgOykuICJEZWZhdWx0IiBtZW51bmp1a2thbiBqaWthIHBsdWdpbiBpbmkgZGlha3RpZmthbiBzZWNhcmEgbGFsYWkgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IHVudHVrIG1lbWJvbGVoa2FuIHNlY2FyYSBtYW51YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBsYWp1ciBtZW51bmp1a2thbiBkaSBFeHBsb3JlciBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiB5YW5nIGRpdHVuanVra2FuIGRhbGFtIGp1cm5hbCBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0gY2FyaWFuIEZBUS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ01lbnRha3JpZmthbiBkaSBtYW5hIHBhdXRhbiBcJ0luc2VydCBGQVFcJyBha2FuIGRpcGFwYXJrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXNpIGl0ZW0gRkFRIHBlcmN1bWEgYmlkYW5nIHRla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1BhZGFtIEZBUSBpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnTWVkYW4gRGluYW1payBkaXR1bmp1a2thbiBkYWxhbSBza3JpbiB0YW1iYWggRkFRIGRhcmkgcGFwYXJhbiBlamVuLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLCAyID0gRGlha3RpZmthbiBkYW4gRGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnTWVkYW4gRGluYW1payBkaXR1bmp1a2thbiBkYWxhbSBza3JpbiBlZGl0IEZBUSBkYXJpIHBhcGFyYW4gZWplbi4gVGV0YXBhbiBLZW11bmdraW5hbjogMCA9IERpbHVtcHVoa2FuLCAxID0gRGlha3RpZmthbiwgMiA9IERpYWt0aWZrYW4gZGFuIERpcGVybHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdNZWRhbiBEaW5hbWlrIGRpdHVuanVra2FuIGRhbGFtIHNrcmluIHRpbmphdWFuIEZBUSBkYXJpIHBhcGFyYW4gZWplbi4gVGV0YXBhbiBLZW11bmdraW5hbjogMCA9IERpbHVtcHVoa2FuLCAxID0gRGlha3RpZmthbiwgMiA9IERpYWt0aWZrYW4gZGFuIERpcGVybHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnTWVkYW4gRGluYW1payBkaXR1bmp1a2thbiBkYWxhbSBza3JpbiB0aW5qYXVhbiBGQVEgZGFyaSBwYXBhcmFuIG9yYW5nIGF3YW0uIFRldGFwYW4gS2VtdW5na2luYW46IDAgPSBEaWx1bXB1aGthbiwgMSA9IERpYWt0aWZrYW4sIDIgPSBEaWFrdGlma2FuIGRhbiBEaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4gY2V0YWsgRkFRIGRhcmkgcGFwYXJhbiBlamVuLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4gY2V0YWsgRkFRIGRhcmkgcGFwYXJhbiBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIFRldGFwYW4gS2VtdW5na2luYW46IDAgPSBEaWx1bXB1aGthbiwgMSA9IERpYWt0aWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4gY2V0YWsgRkFRIGRhcmkgcGFwYXJhbiBvcmFuZyBhd2FtLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnTWVkYW4gRGluYW1payBkaXR1bmp1a2thbiBkYWxhbSBza3JpbiBjYXJpYW4gRkFRIGRhcmkgcGFwYXJhbiBlamVuLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLCAyID0gRGlha3RpZmthbiBkYW4gRGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4gY2FyaWFuIEZBUSBkYXJpIHBhcGFyYW4gcGVsYW5nZ2FuLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLCAyID0gRGlha3RpZmthbiBkYW4gRGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdNZWRhbiBEaW5hbWlrIGRpdHVuanVra2FuIGRhbGFtIHNrcmluIGNhcmlhbiBGQVEgZGFyaSBwYXBhcmFuIG9yYW5nIGF3YW0uIFRldGFwYW4gS2VtdW5na2luYW46IDAgPSBEaWx1bXB1aGthbiwgMSA9IERpYWt0aWZrYW4sIDIgPSBEaWFrdGlma2FuIGRhbiBEaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdNZWRhbiBEaW5hbWlrIGRpdHVuanVra2FuIGRhbGFtIHNrcmluIHRpbmphdWFuIGZvcm1hdCBrZWNpbCBGQVEgZGFyaSBwYXBhcmFuIGVqZW4uIFRldGFwYW4gS2VtdW5na2luYW46IDAgPSBEaWx1bXB1aGthbiwgMSA9IERpYWt0aWZrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4genVtIEZBUSBkYXJpIHBhcGFyYW4gZWplbi4gVGV0YXBhbiBLZW11bmdraW5hbjogMCA9IERpbHVtcHVoa2FuLCAxID0gRGlha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4genVtIEZBUSBkYXJpIHBhcGFyYW4gYW50YXJhIG11a2EgcGVsYW5nZ2FuLiBUZXRhcGFuIEtlbXVuZ2tpbmFuOiAwID0gRGlsdW1wdWhrYW4sIDEgPSBEaWFrdGlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ01lZGFuIERpbmFtaWsgZGl0dW5qdWtrYW4gZGFsYW0gc2tyaW4genVtIEZBUSBkYXJpIHBhcGFyYW4gb3JhbmcgYXdhbS4gVGV0YXBhbiBLZW11bmdraW5hbjogMCA9IERpbHVtcHVoa2FuLCAxID0gRGlha3RpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0F1ZGl0IEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIHBlbGJhZ2FpIGJhaGFzYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aWZrYW4gdW5kaWFuIG1la2FuaXNtYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdQZW5lcm9rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdQZW5ndWxhcyBBSkFYIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ1JpY2h0ZXh0IHVudHVrIEFKQVggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnQmFoYWdpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0JhaGFnaWFuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdCdWFuZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnU3VudGluZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0p1cm5hbCBGQVEgbGloYXQgc2VtdWxhICJLZWNpbCIgaGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGloYXQgc2VtdWxhIEZBUSBoYWQgImtlY2lsIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnQ2V0YWthbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ1NvYWxhbiBMYXppbSBoYWQgYmFnaSBzZXRpYXAgaGFsYW1hbiB1bnR1ayBUaW5qYXVhbiBKdXJuYWwgRkFRICJLZWNpbCIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdIYWQgRkFRIHNldGlhcCBoYWxhbWFuIHVudHVrIFRpbmphdWFuIEZBUSAiS2VjaWwiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQ2FyaWFuIFNvYWxhbiBMYXppbSBiYWNrZW5kIHJvdXRlciBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ01lZGFuNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdNZWRhbjUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgcGVudWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS3VtcHVsYW4gYmFnaSBrZWx1bHVzYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdTZWphcmFoIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1Rlcm1hc3VrIGJpZGFuZyBkYWxhbWFuIFRpa2V0IGJlcmFzYXNrYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1Rlcm1hc3VrIG5hbWEgc2V0aWFwIGJpZGFuZyBkYWxhbSBUaWtldCBiZXJhc2Fza2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBbnRhcmEgbXVrYSBkaSBtYW5hIGNhcmlhbiBjZXBhdCBoZW5kYWtsYWggZGl0dW5qdWtrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0ZBUSBwYXV0YW4gaW5pIGtlcGFkYSBvYmplayBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlbmFyYWkgamVuaXMga2VhZGFhbiB5YW5nIGJvbGVoIGRpZ3VuYWthbiBkYWxhbSBydWFuZyBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW5hcmFpIGplbmlzIGtlYWRhYW4geWFuZyBib2xlaCBkaWd1bmFrYW4gZGFsYW0gcnVhbmcgYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VuYXJhaSBqZW5pcyBrZWFkYWFuIHlhbmcgYm9sZWggZGlndW5ha2FuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIGFrYW4gZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgbXVrYSBlamVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIGFrYW4gZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gRkFRIGFydGlrZWwgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBqdXJuYWwgRkFRIGRpIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRhbGFtIEZBUSBFeHBsb3JlciBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGFsYW0gRkFRIEV4cGxvcmVyIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRhbGFtIEZBUSBFeHBsb3JlciBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRpIEZBUSBDYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkaSBGQVEgQ2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGkgRkFRIENhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkYWxhbSBqdXJuYWwgRkFRIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHVudHVrIG1lbmphbmEgcHJvZmlsIEhUTUwgT3BlblNlYXJjaCB1bnR1ayBjYXJpYW4gRkFRIHBlbmRlayBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdQZXJrYXJhIEJhcnUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0FydGlrZWwgYmFydSBGQVEgcGVybHUga2VsdWx1c2FuIHNlYmVsdW0gbWVyZWthIG1lbmRhcGF0IGRpdGVyYml0a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIEV4cGxvcmVyIEZBUSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gRXhwbG9yZXIgRkFRIGFudGFyYSBtdWthIGF3YW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIGFrYW4gZGlwYXBhcmthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0JpbGFuZ2FuIGl0ZW0geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBwZXJ1YmFoYW4gdGVyYWtoaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIHRlcmFraGlyIGRpY2lwdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIDEwIHRlcmF0YXMgY2lyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBGQVEgZGl0dW5qdWtrYW4pIGdhbWJhcmFuIGtlY2lsIGp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgbXVrYSBzdXJhdCAoZGkgbWFuYSBpdGVtIEZBUSBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2VzZWx1cnVoYW4gRkFRIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0NldGFrIGhhbGFtYW4gRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ2NldGFrYW4gRkFRIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ3p1bSBGQVEgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdjYXJpYW4gRkFRIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdGQVEgVW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdCZXJhdHVyIHVudHVrIGtlbHVsdXNhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdLYWRhciB1bnR1ayBtZW5ndW5kaS4gS3VuY2kgbWVzdGlsYWggZGFsYW0gcGVyYXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGtldGluZ2dpYW4gbGFsYWkgKGRhbGFtIHBpa3NlbCkgYmlkYW5nIEhUTUwgc2ViYXJpcyBkYWxhbSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBrZXRpbmdnaWFuIGxhbGFpIChkYWxhbSBwaWtzZWwpIGJpZGFuZyBIVE1MIHNlYmFyaXMgZGFsYW0gQ3VzdG9tZXJGQVFab29tIChkYW4gUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4ga2V0aW5nZ2lhbiBtYWtzaW11bSAoZGFsYW0gcGlrc2VsKSBiaWRhbmcgSFRNTCBzZWJhcmlzIGRhbGFtIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGtldGluZ2dpYW4gbWFrc2ltdW0gKGRhbGFtIHBpa3NlbCkgYmlkYW5nIEhUTUwgc2ViYXJpcyBkYWxhbSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUdW5qdWtrYW4gIlNpc2lwYW4gRkFRIExpbmsiIEJ1dGFuZyBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhd2FtIEZBUSBBcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUdW5qdWtrYW4gYnV0YW5nICJTaXNpcGFuIEZBUSBMaW5rICYgVGVrcyIvICJTaXNpcGFuIHBlbnVoIEZBUSIgZGkgQWdlbnRGQVFab29tU21hbGwgdW50dWsgYXdhbSBGQVEgQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiBidXRhbmcgIlNpc2lwYW4gVGVrcyBGQVEiIC8gIlNpc2lwYW4gUGVudWggRkFRIiBkaSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnUGFwYXIgRkFRIFBlcmthcmEgZGVuZ2FuIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1BhcGFyIEZBUSBqYWxhbiB5YSAvIHRpZGFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiBpdGVtLWl0ZW0gdGlkYWsgc2FoaWggZGFsYW0ga2VwdXR1c2FuIFBlbmVyb2thIEZBUSBiYWdpIGFudGFyYW11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1BhcGFyIGl0ZW0gc3Via2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01lbnVuanVra2FuIGl0ZW0gcGVydWJhaGFuIHRlcmFraGlyIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUdW5qdWtrYW4gYWtoaXIgbWVuY2lwdGEgaXRlbSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1BhcGFyIHRvcCAxMCBpdGVtIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdQYXBhciBtZW5ndW5kaSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHlhbmcgbWVtYm9sZWhrYW4gbWVuZ2h1YnVuZ2thbiBGQVEgZGVuZ2FuIG9iamVrIGxhaW4gZGFsYW0gcGFuZGFuZ2FuIHpvb20gRkFRIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbiB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIG1lbWFkYW0gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBlamVuIHVudHVrIG1lbGloYXQgc2VqYXJhaCBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsgbWVuZ2VkaXQgYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbiB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIGtlbWJhbGkga2UgaGFsYW1hbiBzZWJlbHVtbnlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbiwgeWFuZyBtZW1ib2xlaGthbiB1bnR1ayBtZW5jZXRhayBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdQZW55ZWxlc2FpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnaGFueWEgdGVrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnUGVuZ2VjYW0gdW50dWsgaXRlbSBGQVEsIHNlcGVydGkgRkFRICMsICMgS0IsIE15RkFRICMuIE5pbGFpIGxhbGFpIGFkYWxhaCAjIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGV0YXBhbiBpbmkgbWVudGFrcmlma2FuIGJhaGF3YSBvYmplayBcJ0ZBUVwnIGJvbGVoIGRpcGF1dCBkZW5nYW4gb2JqZWsgXCdGQVFcJyBsYWluIG1lbmdndW5ha2FuIGplbmlzIHBhdXRhbiBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2Egb2JqZWsgXCdGQVFcJyBib2xlaCBkaXBhdXQgZGVuZ2FuIG9iamVrIFwnRkFRXCcgbGFpbiBtZW5nZ3VuYWthbiBqZW5pcyBwYXV0YW4gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFoYXdhIFwnIEZBUVwnIG9iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdiaWFzYVwnIGxhaW4gXCdUaWtldFwnIGJvbGVoIGRpa2FpdGthbiBkZW5nYW4gb2JqZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGV0YXBhbiBpbmkgbWVudGFrcmlma2FuIGJhaGF3YSBvYmplayBcJ0ZBUVwnIGJvbGVoIGRpcGF1dCBkZW5nYW4gXCdUaWtldFwnIGxhaW4gbWVuZ2d1bmFrYW4gamVuaXMgcGF1dGFuIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JhZGFuIHRpa2V0IHVudHVrIG1lbGVwYXNrYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdUZXJ0YWtsdWsga2VwYWRhIHRpa2V0IHVudHVrIG1lbGVwYXNrYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdJdGVtIFRvb2xiYXIgdW50dWsgamFsYW4gcGludGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnbHVhcmFuIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdkYWxhbWFuIChlamVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdhd2FtIChhd2FtKSc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMZWdnIHRpbCBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdOw7hra2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZGtqZW5uaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCBmb3IgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0xlZ2cgdGlsIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1NsZXR0IGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VuZHJlIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnVW5kZXJrYXRlZ29yaSBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnU2Frc2JlaGFuZGxlcmdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBhcnRpa2xlciBpIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCB2aXNlcyBzb20ga29tbWVudGFyIGkgdXRmb3Jza2VyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0ZWdvcmllbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbiwgZm9yZGkgZGVuIGVyIGJydWt0IGkgbWluc3QgZW4gT1NTLWFydGlra2VsIG9nL2VsbGVyIGZvcmVsZHJlIHRpbCBtaW5zdCBlbiBhbm5lbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgYnJ1a3QgaSBmw7hsZ2VuZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgZm9yZWxkcmUgdGlsIGbDuGxnZW5kZSB1bmRlcmthdGVnb3JpZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBhcnRpa2tlbGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdPU1MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1V0Zm9yc2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbnNlcnQgc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ09mdGUgU3RpbHRlIFNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdJbmdlbiB1bmRlcmthdGVnb3JpZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3Jpa2sgZm9yJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0xlZ2cgdGlsIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTbGV0dCBzcHLDpWsgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFbmRyZSBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGV0dGUgc3Byw6VrZXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0R1IGthbiBpa2tlIHNsZXR0ZSBkZXR0ZSBzcHLDpWtldC4gRGV0IGVyIGJydWt0IGkgbWluc3QgZW4gT1NTIGFydGlra2VsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0tvbnRla3N0dmFsZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdPU1MgYXJ0aWtsZXIgcGVyIHNpZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gYXJ0aWtsZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ07DuGtrZWxvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdHb2RramVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTaXN0IGVuZHJldCBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ09wcHJldHRlbHNlc3RpZHNwdW5rdCBmb3IgT1NTIGFydGlra2VsZW4gKGbDuHIvZXR0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ09wcHJldHRlbHNlc3RpZHNwdW5rdCBmb3IgT1NTIGFydGlra2VsZW4gKG1lbGxvbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ09TUy1zw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUHJvZmlsdmFsZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnU3RlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnSW5nZW4gc3RlbW1laW5uc3RpbGxpbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1NwZXNpZmlrayBub3Rpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1Jhbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnSW5nZW4gcmFuZ2VyaW5nc2lubnN0aWxsaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvIG9tIE9TUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdSYXRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdhdiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdJbmdlbiBzdGVtbWVyIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0luZ2VuIHN0ZW1tZXIgYXZnaXR0ISBCbGkgZGVuIGbDuHJzdGUgdGlsIMOlIHN0ZW1tZSBww6UgZGVubmUgYXJ0aWtrZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0xhc3QgbmVkIHZlZGxlZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdWYXIgZGVubmUgYXJ0aWtrZWxlbiB0aWwgaGplbHA/IFbDpnIgc25pbGwgb2cgZ2kgb3NzIGRpbiBzdGVtbWUsIHNsaWsgYXQgdmkga2FuIGZvcmJlZHJlIGRhdGFiYXNlbi4gVHVzZW4gdGFrayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpa2tlIHRpbCBoamVscCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2ZWxkaWcgbnl0dGlnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnU2V0dCBpbm4gT1NTLXRla3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdTZXR0IGlubiBPU1MtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1NldHQgaW5uIE9TUy10ZWtzdCBvZyAtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0luZ2VuIE9TUy1hcnRpa2xlciBibGUgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRnVsbHRla3N0c8O4ayBpIE9TUy1hcnRpa2xlciAoZi5la3MuICJPbCoiIGVsbGVyICJBbmRyZWFzKm4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgc3RlbW1lci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgcmFuZ2VyaW5nZXIuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQXJ0aWtrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7hrIGV0dGVyIGFydGlrbGVyIG1lZCBuw7hra2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09mZmVudGxpZyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGlsYmFrZSB0aWwgT1NTIHV0Zm9yc2tlcmVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRW4ga2F0ZWdvcmkgbcOlIGhhIGV0IG5hdm4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVrc2lzdGVyZXIgYWxsZXJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ09TUy1rYXRlZ29yaSBvcHBkYXRlcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgbGFndCB0aWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ09TUy1oaXN0b3Jpa2snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdPU1Mtam91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYXZuIGVyIHDDpWtyZXZkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RldHRlIHNwcsOla2V0IGZpbm5lcyBhbGxlcmVkZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ09TUy1zcHLDpWsgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnT1NTLXNwcsOlayBsYWd0IHRpbCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnU2lzdCBvcHBkYXRlcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0luZ2VuIHJlc3VsdGF0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ09TUy1udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1Rha2sgZm9yIGRpbiBzdGVtbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnRHUgaGFyIGFsbGVyZWRlIHN0ZW10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSW5nZW4gcmF0aW5nIHZhbGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdVdHNrcmlmdCBhdiBPU1MtYXJ0aWtrZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdPU1MtYXJ0aWtsZXIgKG55bGlnIG9wcHJldHRldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ09TUy1hcnRpa2xlciAobnlsaWcgZW5kcmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdPU1MtYXJ0aWtsZXIgKFRvcHAgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0Rlbm5lIGFydGlra2VsZW4gZXIgdG9tISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaXN0IG9wcHJldHRlZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1Npc3Qgb3BwZGF0ZXJ0ZSBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcHAgMTAgT1NTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZWtzdGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdvZmZlbnRsaWcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLWZhcmdlIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBbnRhbGwgZGVzaW1hbGVyIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdGb3J2YWxndCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFyZCBwcmlvcml0ZXQgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIGV0IE9TUy1vYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2pvbiBhdiBmcml0ZWtzdGZlbHQgZm9yIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdTbGV0dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRW5kcmUgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1V0Zm9yc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnRmVsdCA0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZlbHQgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcGUgc29tIHNrYWwgZ29ka2plbm5lIE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlrayBvdmVyIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6Vrb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMZW5rIG9wcCBldCBhbm5ldCBvYmpla3QgdGlsIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOeSBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTnllIGFydGlrbGVyIHRyZW5nZXIgZ29ka2plbm5pbmcgZsO4ciBkZSBrYW4gcHVibGlzZXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdBbnRhbGwgb2JqZWt0ZXIgdmlzdCBpIHNpc3RlIGVuZHJpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdBbnRhbGwgdmlzdGUgb2JqZWt0ZXIgdW5kZXIgc2lzdCBvcHByZXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW50YWxsIHZpc3RlIGFydGlrbGVyIGkgIlRvcHAgMTAiLWZ1bmtzam9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdTa3JpdiB1dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0vDuCBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1JhdGVyIGZvciBhdnN0ZW1taW5nLiBOw7hra2VsIG3DpSB2w6ZyZSBpIHByb3NlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1PDuGsgaSBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1ZpcyBIVE1MIGkgT1NTLWFydGlra2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdWaXMgT1NTLXN0aSAoamEvbmVpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnVmlzIGlubmhvbGQgaSB1bmRlcmthdGVnb3JpZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBzaXN0IGVuZHJlZGUgYXJ0aWtsZXIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgc2lzdCBvcHByZXR0ZWRlIGFydGlrbGVyIGkgZGVmaW5lcnRlIGdyZW5zZXNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzICJUb3BwIDEwIiBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBhdnN0ZW1taW5nIGkgZGVmaW5lcnRlIGdyZW5zZW5zbml0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU3ltcHRvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgZm9yIGVuIE9TUy1hcnRpa2tlbCwgZi5la3MuIEZBUSMsIEtCIywgT1NTIywgTWluT1NTIy4gU3RhbmRhcmQgZXIgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBPU1MtYXJ0aWtsZXIgbWVkICJGb3JlbGRyZS9CYXJuIi1sZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1Nha3Npbm5ob2xkIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWtzZW1uZSBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdrdW4gdGlsIGt1bmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAna3VuIGludGVybnQgKGFnZW50ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBcnRpa2VsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1RyZWZ3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2llcyBlZW4gY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZWRrZXVyaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBjYXRlZ29yaWViZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdmVyd2lqZGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yaWUgdmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2VsZWN0ZWVyIHRlbm1pbnN0ZSDDqcOpbiBwZXJtaXNzaWVncm9lcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dlYnJ1aWtlcnMgbWV0IHJlY2h0ZW4gb3AgYXJ0aWtlbGVuIGluIGRlemUgY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnV29yZHQgaW4gd2ViaW50ZXJmYWNlIGdldG9vbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdXaWx0IHUgZGV6ZSBjYXRlZ29yaWUgdmVyd2lqZGVyZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnVSBrdW50IGRlemUgY2F0ZWdvcmllIG5pZXQgdmVyd2lqZGVyZW4uIEhpaiB3b3JkdCBnZWJydWlrdCBpbiBlZW4gb2YgbWVlciBhcnRpa2VsZW4gZW4vb2YgaGVlZnQgb25kZXJsaWdnZW5kZSBjYXRlZ29yacOrbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdEZXplIGNhdGVnb3JpZSB3b3JkdCBnZWJydWlrdCBkb29yIGRlIHZvbGdlbmRlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdEZXplIGNhdGVnb3JpZSBoZWVmdCBkZSB2b2xnZW5kZSBzdWJjYXRlZ29yacOrbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdXaWx0IHUgZGl0IGFydGlrZWwgdmVyd2lqZGVyZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFRIHZlcmtlbm5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdab2VrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ1dpbGRjYXJkcyB6aWpuIHRvZWdlc3RhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1VpdGdlYnJlaWQgem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdHZWVuIHN1YmNhdGVnb3Jpw6tuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnR2VzY2hpZWRlbmlzIHZhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnVGFhbCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnVGFhbCB2ZXJ3aWpkZXJlbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnVGFhbCBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV2lsdCB1IGRlemUgdGFhbCB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVSBrdW50IGRlemUgdGFhbCBuaWV0IHZlcndpamRlcmVuLCBoaWogd29yZHQgZ2VicnVpa3QgZG9vciBlZW4gb2YgbWVlciBhcnRpa2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV6ZSB0YWFsIGlzIGdlYnJ1aWt0IHZvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29udGV4dCBJbnN0ZWxsaW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQWFudGFsIGFydGlrZWxlbiBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0dlZW4gRkFRIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1RyZWZ3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdTdGVtIChiaWp2LiBnZWxpamsgYWFuIDEwIG9mIGdyb3RlciBkYW4gNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1ZlcmhvdWRpbmcgKHZiOiBHZWxpamsgYWFuIDI1JSBvZiBHcm90ZXIgZGFuIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdBYW5nZW5vbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhYXRzdCBnZXdpanppZ2QgZG9vcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lICh2b29yL25hKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAodHVzc2VuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lICh2b29yL25hKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAodHVzc2VuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdab2VrZW4gaW4gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRIHpvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpZWwgc2VsZWN0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1N0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0dlZW4gaW5zdGVsbGluZ2VuIG9tIHRlIHN0ZW1tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVjaWZpZWtlIHN0ZW1tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAndmI6IEdlbGlqayBhYW4gMTAgb2YgR3JvdGVyIERhbiA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnQmVvb3JkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ0dlZW4gYmVvb3JkZWxpbmcgaW5zdGVsbGluZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpZWtlIGJlb29yZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnYmlqdi4gZ2VsaWprIDI1JSBvZiBncm90ZXIgZGFuIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZW9vcmRlbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ZhbiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdHZWVuIHN0ZW1tZW4gZ2V2b25kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0dlZW4gc3RlbW1lbiBnZXZvbmRlbi4gV2VlcyBkZSBlZXJzdGUgb20gZGl0IGFydGlrZWwgdGUgYmVvb3JkZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ1NsYSBiaWpsYWdlIG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnT20gZGUgbGlua3MgaW4gZGUgb21zY2hyaWp2aW5nZW4gdGUgb3BlbmVuIGlzIGhldCBtb2dlbGlqayBkYXQgdSBDdHJsIG9mIENtZCBvZiBTaGlmdCBtb2V0IGluZHJ1a2tlbiB0ZXJ3aWpsIHUgb3AgZGUgbGluayBrbGlrdCAoYWZoYW5rZWxpamsgdmFuIHV3IGJyb3dzZXIgZW4gYmVzdHVyaW5nc3N5c3RlZW0pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0hpZWxwIGRpdCBhcnRpa2VsIGJpaiBoZXQgYmVhbnR3b29yZGVuIHZhbiB1dyB2cmFhZz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdoZWxlbWFhbCBuaWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ2hlZWwgZXJnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdGQVEgdGl0ZWwgdG9ldm9lZ2VuIGFhbiBvbmRlcndlcnAgdmFuIGhldCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ1ZvZWcgRkFRIHRla3N0IGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1ZvbGxlZGlnZSBGQVEgaW52b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnVm9lZyBsaW5rIG5hYXIgRkFRIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdWb2VnIEZBUSB0ZWtzdCBlbiBsaW5rIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdWb2xsZWRpZ2UgRkFRICYgTGluayBpbnZvZWdlbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0dlZW4gYXJ0aWtlbGVuIGdldm9uZGVuLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1pvZWtlbiBpbiB0ZWtzdCB2YW4gYXJ0aWtlbGVuIChiaWp2LiAiSmFucyplbiIgb2YgIlByaW50KiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnU3RlbW1pbmdzYmVwZXJraW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0FsbGVlbiBGQVEgYXJ0aWtlbGVuIHdhYXJvcCBnZXN0ZW1kIHdlcmQuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdCZXBlcmtpbmdlbiB2YW4gYmVvb3JkZWxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdBbGxlZW4gRkFRIGFydGlrZWxlbiBtZXQgZWVuIGJlb29yZGVsaW5nIC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VscyBkaWUgYWFuZ2VtYWFrdCB3ZXJkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VsIGRpZSBhYW5nZW1hYWt0IHdlcmRlbiB0dXNzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnWm9lay1Qcm9maWVsIGFscyB0ZW1wbGF0ZT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpa2VsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnWm9layBvcCBhcnRpa2VsZW4gbWV0IHRyZWZ3b29yZCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdPcGVuYmFhcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGVydWcgbmFhciBkZSBGQVEgVmVya2VubmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnR2VlZiBlZW4gbmFhbSBvcCB2b29yIGRlIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0RlemUgY2F0ZWdvcmllIGJlc3RhYXQgYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgYmlqZ2V3ZXJrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgdG9lZ2V2b2VnZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBqb3VybmFhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdEZSBuYWFtIGlzIHZlcnBsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEZXplIHRhYWwgYmVzdGFhdCBhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ1RhYWwgYmlqZ2V3ZXJrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnVGFhbCB0b2VnZXZvZWdkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdMYWF0c3RlIHVwZGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVEgRHluYW1pc2NoZSB2ZWxkZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnR2VlbiByZXN1bHRhYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEgbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnQmVkYW5rdCB2b29yIHV3IHN0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVSBoZWVmdCBhbCBnZXN0ZW1kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0dlZW4gd2FhcmRlcmluZyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIGFmZHJ1a2tlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlrZWxlbiAobmlldXcgYWFuZ2VtYWFrdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWxlbiAobGFhdHN0IGdld2lqemlnZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbGVuICh0b3AgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0RpdCBpdGVtIGhlZWZ0IGdlZW4gd2FhcmRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgYWFuZ2VtYWFrdGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xhYXRzdCBnZXdpanppZ2RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnUG9wdWxhaXJzdGUgYXJ0aWtlbGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpZWsnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIGtsZXVyIHZvb3IgZGUgc3RlbW1pbmdzdWl0c2xhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnQmVoZWVyIGNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnU3RhbmRhYXJkIGNhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFhcmQgcHJpb3JpdGVpdCB2YW4gdGlja2V0cyB2b29yIGdvZWRrZXVyaW5nIHZhbiBGQVEgYXJ0aWtlbHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFhcmQgc3RhdHVzIHZvb3IgRkFRIGFydGlrZWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFhcmQgc3RhdHVzIHZhbiBoZXQgdGlja2V0IHZvb3IgaGV0IGdvZWRrZXVyZW4gdmFuIEZBUSBhcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVmVyd2lqZGVyIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnQmV3ZXJrIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnT3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ1ZlbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ1ZlbGQ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dyb2VwIHZvb3IgZGUgZ29lZGtldXJpbmcgdmFuIEZBUSBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnR2VzY2hpZWRlbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0xvZ2JvZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdLb3BwZWwgZWVuIGFuZGVyIG9iamVjdCBhYW4gZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOaWV1dyBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0FydGlrZWwgYWZkcnVra2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdab2VrZW4gaW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdUb29uIEZBUSBpdGVtIG1ldCBIVE1MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Rvb24gRkFRIHBhZCBqYS9uZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1Rvb24gaXRlbXMgdmFuIHN1YmNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUb29uIHN0ZW0tZmVhdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdPcGxvc3NpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1N5bXB0b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa2xhbnRlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoZ2VicnVpa2VycyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdEb2RhaiBhcnR5a3XFgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdzxYJvd2Ega2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgamVzdCB3eW1hZ2FuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdaYXR3aWVyZHplbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBrYXRlZ29yaWFtaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmnEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdVc3XFhCBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmnEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWR5dHVqIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdQb2RrYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdaYXpuYWN6IHByenluYWptbmllaiBqZWRuxIUgZ3J1cMSZIHVwcmF3bmllxYQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVweSBhZ25ldMOzdywga3TDs3JlIG1hasSFIGRvc3TEmXAgZG8gdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1pvc3RhbmllIHBva2F6YW55IGpha28ga29tZW50YXJ6IHcgZWtzcGxvcmVyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdDenkgbmEgcGV3bm8gY2hjZXN6IHVzdW7EhcSHIHTEmSBrYXRlZ29yacSZPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ05pZSBtb8W8ZXN6IHVzdW7EhcSHIHRlaiBrYXRlZ29yaWkuIEplc3Qgb25hIHXFvHl3YW5hIHByemV6IHByenluYWptbmllaiBqZWRlbiBhcnR5a3XFgiBGQVEgbHViL2kgamVzdCByb2R6aWNlbSBwcnpuYWptbmllaiBqZWRuZWogaW5uZWoga2F0ZWdvcmlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnVGEga2F0ZWdvcmlhIGplc3QgdcW8eXdhbmEgdyBuYXN0xJlwdWrEhWN5Y2ggYXJ0eWt1xYJhY2ggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ1RhIGthdGVnb3JpYSBqZXN0IHJvZHppY2VtIG5hc3TEmXB1asSFY3ljaCBwb2RrYXRlZ29yaWknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gYXJ0eWt1xYIgRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0Vrc3Bsb3JlciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU3p5YmtpZSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ1puYWtpIHdpZWxvem5hY3puZSBzxIUgZG96d29sb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgemFhd2Fuc293YW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdQb2RrYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0eWt1xYJ5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0JyYWsgcG9ka2F0ZWdvcmlpLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggdyBkemllbm5pa3UgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVxbx5aiB0ZWogZnVua2NqaSBqZcWbbGkgY2hjZXN6IHByYWNvd2HEhyB6IHdpZWxvbWEgasSZenlrYW1pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnVXN1xYQgasSZenlrICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWR5dHVqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gasSZenlrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdOaWUgbW/FvGVzeiB1c3VuxIXEhyB0ZWdvIGrEmXp5a2EuIEplc3Qgb24gdcW8eXdhbnkgdyBwcnp5bmFqbW5pZWogamVkbnltIGFydHlrdWxlIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdUZW4gasSZenlrIGplc3QgdcW8eXdhbnkgdyBuYXN0xJlwdWrEhWN5Y2ggYXJ0dWt1xYJhY2ggRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnVXN0YXdpZW5pYSBrb250ZWtzdG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdMaWN6YmEgYXJ0eWt1xYLDs3cgRkFRIG5hIHN0cm9uxJknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdTxYJvd28ga2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdaYXR3aWVyZHpvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnT3N0YXRuaW8gem1pZW5pb25lIHByemV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEN6YXMgdHdvcnplbmlhIHpnxYJvc3plbmlhIChwcnplZC9wbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEN6YXMgdHdvcnplbmlhIHpnxYJvc3plbmlhIChwb21pxJlkenkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEN6YXMgem1pYW55IHpnxYJvc3plbmlhIChwcnplZC9wbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEN6YXMgem1pYW55IHpnxYJvc3plbmlhIChwb21pxJlkenkpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSBwZcWCbm90ZWtzdG93byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1d5c3p1a2l3YW5pZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdXeWLDs3IgcHJvZmlsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnR8WCb3N1aic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnT2NlxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEN6YXMgem1pYW55IHpnxYJvc3plbmlhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ09jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAneiA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR8WCb3N5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0JyYWsgZ8WCb3PDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdCcmFrIGfFgm9zw7N3ISBCxIVkxbogcGllcndzenkgaSBvY2XFhCB0ZW4gYXJ0eWt1xYIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnUG9iaWVyeiB6YcWCxIVjem5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0phayBwb21vY255IGJ5xYIgdGVuIGFydHlrdcWCPyBQcm9zaW15IG8gdHdvasSFIG9jZW7EmSBpIHBvbW9jIHByenkgdWRvc2tvbmFsYW5pdSBiYXp5IEZBUS4gRHppxJlrdWplbXkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmllcHJ6eWRhdG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3BvbW9jbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdXc3RhdyB0ZWtzdCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ1dzdGF3IG9kbm/Fm25payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1dzdGF3IHRla3N0IGkgb2Rub8WbbmlrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmllIHpuYWxlemlvbm8gYXJ0eWt1xYLDs3cgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1d5c3p1a2l3YW5pZSBwZcWCbm90ZWtzdG93ZSB3IGFydHlrdcWCYWNoIEZBUSAobnAuICJOYWoqcHN6eSIgbHViICJLb3dhbHNrKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N6dWthaiBhcnR5a3XFgsOzdyB6YSBwb21vY8SFIHPFgm93YSBrbHVjem93ZWdvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1BvYmxpY3puZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhIHBvd2lubmEgcG9zaWFkYcSHIG5henfEmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1RhIGthdGVnb3JpYSBqdcW8IGlzdG5pZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGEga2F0ZWdvcmlhIGp1xbwgaXN0bmllamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIHpha3R1YWxpem93YW5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnS2F0ZWdvcmlhIEZBUSBkb2RhbmEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEemllbm5payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmF6d2EgamVzdCB3eW1hZ2FuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdUZW4gasSZenlrIGp1xbwgaXN0bmllamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdKxJl6eWsgRkFRIHpha3R1YWxpem93YW55ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSsSZenlrIEZBUSBkb2RhbnkhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ09zdGF0bmlhIGFrdHVhbGl6YWNqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOdW1lciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnUsOzd25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1dpxJlrc3plIG5pxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ1dpxJlrc3plIGx1YiByw7N3bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTW5pZWpzemUgbmnFvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTW5pZWpzemUgbHViIHLDs3duZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnRHppxJlrdWplbXkgemEgb2RkYW5pZSBnxYJvc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnSnXFvCByYXogZ8WCb3Nvd2HFgmXFmyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWUgd3licmHFgmXFmyBvY2VueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0RydWt1aiBpbmZvcm1hY2rEmSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChub3dlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0eWt1xYJ5IEZBUSAob3N0YXRuaW8gem1pZW5pb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnR5a3XFgnkgRkFRICgxMCBuYWpsZXBzenljaCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ09zdGF0bmlvIGRvZGFuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdPc3RhdG5pbyB6YWt0dWFsaXpvd2FuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGluZm9ybWFjamkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnd2V3bsSZdHJ6bnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd6ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWN6bnknOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnS29sb3IgQ1NTIGRsYSB3eW5pa8OzdyBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ01pZWpzY2EgcG8gcG90cnplY2lua3UgdyB3eW5pa2FjaCBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0RvbXnFm2xuYSBuYXp3YSBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdEb215xZtsbnkgasSZenlrIGRsYSBhcnR5a3XFgsOzdyBGQVEgdyB0cnliaWUgcG9qZWR5bmN6ZWdvIGrEmXp5a2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdEb215xZtsbnkgcHJpb3J5dGV0IHpnxYJvc3plxYQgZGxhIHphdHdpZXJkemXFhCBhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdEb215xZtsbnkgc3RhbiBkbGEgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljamEgcG9sYSBmcmVlIHRleHQgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1VzdcWEIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkeXR1aiB0byBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1fFgsSFY3ogd2llbGUgasSZenlrw7N3IHcgbW9kdWxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnV8WCxIVjeiBtZWNoYW5pem0gZ8WCb3Nvd2FuaWEgdyBtb2R1bGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0Vrc3Bsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIGR6aWVubmlrYSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdCBGQVEgbmEgc3Ryb27EmSB3IHByemVnbMSFZHppZSBkemllbm5pa2EgdyB0cnliaWUgIk1hxYJlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXQgRkFRIG5hIHN0cm9uxJkgdyBwcnplZ2zEhWR6aWUgdyB0cnliaWUgIk1hxYJlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cGFhIGRsYSBha2NlcHRhY2ppIGFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIHRlZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0R6aWVubmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1BvxYLEhWN6IGlubnkgb2JpZWt0IHogdHltIGVsZW1lbnRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3d5IGFydHlrdcWCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOb3dlIGFydHlrdcWCeSBGQVEgd3ltYWdhasSFIHphdHdpZXJkemVuaWEgcHJ6ZWQgcHVibGlrYWNqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnV3lkcnVrdWogdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0tvbGVqa2EgZGxhIHphdHdpZXJkemXFhCBhYXJ0eWt1xYLDs3cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTenVrYWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdSb3p3acSFemFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ09iamF3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdQb3p5Y2phIHBhc2thIG5hcnrEmWR6aW93ZWdvIGRsYSBza3LDs3R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnemV3bsSZdHJ6bmUgKGtsaWVuY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICd3ZXduxJl0cnpuZSAoYWdlbmNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgYXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaWEgdW1hIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0VsaW1pbmFyIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkaXRhciBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlY2lvbmUgcGVsbyBtZW5vcyB1bSBncnVwbyBkZSBwZXJtaXNzw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhZ2VudGVzIGNvbSBhY2Vzc28gYSBhcnRpZ29zIG5lc3RhIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnQ29tZW50w6FyaW8gYSBhcHJlc2VudGFyIG5vIGJyb3dzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0NvbmZpcm1hIGEgcmVtb8Onw6NvIGRlc3RhIGNhdGVnb3JpYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOw6NvIHBvZGUgcmVtb3ZlciBlc3RhIGNhdGVnb3JpYS4gVGVtIHBlbG8gbWVub3MgdW0gYXJ0aWdvIGUvb3UgdW1hIHN1YmNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHV0aWxpemFkYSBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yaWEgdGVtIGFzIHNlZ3VpbnRlcyBzdWJjYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0NvbmZpcm1hIGEgcmVtb8Onw6NvIGRlc3RlIGFydGlnbz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdQZXNxdWlzYSByw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdBc3RlcmlzY29zKCopIHPDo28gcGVybWl0aWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdQZXNxdWlzYSBhdmFuw6dhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3JpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWdvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ05lbmh1bWEgc3ViY2F0ZWdvcmlhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0w7NyaWNvIGRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ1NlbSBkYWRvcyBkZSBkacOhcmlvLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3NlIHJlY3Vyc28gc2Ugdm9jw6ogZGVzZWphIHRyYWJhbGhhciBjb20gbcO6bHRpcGxvcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1JlbW92ZXIgaWRpb21hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBpZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0NvbmZpcm1hIGEgcmVtb8Onw6NvIGRlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTsOjbyBwb2RlIHJlbW92ZXIgZXN0ZSBpZGlvbWEuIMOJIHV0aWxpemFkbyBlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRXN0ZSBpZGlvbWEgw6kgdXRpbGl6YWRvIG5vKHMpIHNlZ3VpbnRlKHMpIGFydGlnbyhzKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpZ29zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bWFzIFBlcmd1bnRhcyBlIFJlc3Bvc3RhcyBFbmNvbnRyYWRhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdQYWxhdnJhLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdWb3Rhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdDbGFzc2lmaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm92YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbWEgYWx0ZXJhw6fDo28gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28gZG8gYXJ0aWdvIChhbnRlcy9kZXBvaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvIGRvIGFydGlnbyAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0YSBkZSBtb2RpZmljYcOnw6NvIGRvIGFydGlnbyAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRhIGRlIG1vZGlmaWNhw6fDo28gZG8gYXJ0aWdvIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gaW50ZWdyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGXDp8OjbyBkZSBwZXJmaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdTZW0gZGVmaW5pw6fDo28gZGUgdm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1ZvdG9zIGVzcGVjw61maWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdleDogSWd1YWwgYSAxMCBvdSBTdXBlcmlvciBhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdDbGFzc2lmaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnU2VtIGNvbmZpZ3VyYcOnw7VlcyBkZSBwb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnQ2xhc3NpZmljYcOnw6NvIGVzcGVjw61maWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZXguIElndWFsIGEgMjUlIG91IG1haW9yIHF1ZSA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdEYXRhIGRlIGNyaWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0RhdGEgZGUgbW9kaWZpY2HDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZG8gYXJ0aWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0NsYXNzaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdTZW0gdm90b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdTZW0gdm90b3MuIFNlamEgbyBwcmltZWlybyBhIGNsYXNzaWZpY2FyIGVzdGUgYXJ0aWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FycmVnYXIgQW5leG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQYXJhIGFicmlyIGFzIGxpZ2HDp8O1ZXMgYWJhaXhvIHBvZGVyw6EgbmVjZXNzaXRhciBkZSBwcmVtaXIgYSB0ZWNsYSBDVFJMIChvdSBDTUQpIG91IFNoaWZ0IChkZXBlbmRlbmRvIGRvIGJyb3dzZXIgZSBkbyBzaXN0ZW1hIG9wZXJhdGl2bykgcXVhbmRvIGNsaWNhciBzb2JyZSBhIGxpZ2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIGZvaSDDunRpbD8gVXRpbGl6ZSBhIGNsYXNzaWZpY2HDp8OjbyBwYXJhIG5vcyBhanVkYXIgYSBtZWxob3JhciBhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRvdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdhanVkb3UgbXVpdG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FkaWNpb25hciBvIHTDrXR1bG8gZGEgRkFRIGFvIGFzc3VudG8gZG8gYXJ0aWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VyaXIgbyB0ZXh0byBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpciBhIEZBUSBjb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcmlyIGxpZ2HDp8OjbyBwYXJhIGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcmlyIHRleHRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpciBvIHRleHRvIGNvbXBsZXRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnSXN0byBwb2RlIEFqdWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIMO6dGVpcyBwYXJhIG8gYXNzdW50byBvdSB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0luc2lyYSB1bSBhc3N1bnRvIG91IHRleHRvIHBhcmEgbGlzdGFyIG9zIHJlY3Vyc29zIMO6dGVpcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIG5vIHRleHRvIGludGVncmFsIGRvcyBhcnRpZ29zIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSB2b3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQXBlbmFzIGFydGlnb3MgY29tIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBjb20gY2xhc3NpZmljYcOnw6NvLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdBcGVuYXMgYXJ0aWdvcyBjcmlhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ0FwZW5hcyBhcnRpZ29zIGNyaWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnR3VhcmRhciBtb2RlbG8gZGUgcGVzcXVpc2E/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTsO6bWVybyBkbyBhcnRpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdQcm9jdXJhciBhcnRpZ29zIGNvbSBhIHBhbGF2cmEtY2hhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHVibGljbyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVm9sdGFyIGFvIGV4cGxvcmFkb3IgZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdOZWNlc3NpdGEgZGUgcGVybWlzc8OjbyBkZSBlc2NyaXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBjYXRlZ29yaWFzIG9uZGUgbyB1c3XDoXJpbyBwb3NzdWEgcGVybWlzc8OjbyBkZSBsZWl0dXJhIGUgZXNjcml0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTsOjbyBmb2kgZW5jb250cmFkbyB1bSBpZGlvbWEgcGFkcsOjbyBlIHTDo28gcG91Y28gY3JpYXIgdW0gbm92by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdOZWNlc3PDoXJpYSBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdBIGNhdGVnb3JpYSBkZXZlIHRlciB1bSBub21lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXN0YSBjYXRlZ29yaWEgasOhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGEgY2F0ZWdvcmlhIGrDoSBleGlzdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtYSBDYXRlZ29yeUlEIGZvaSBpbmZvcm1hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGNsdWlyIGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGFkaWNpb25hZGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJdGVtSUQgZm9pIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdOw6NvIGRpc3DDtWUgZGUgcGVybWlzc8O1ZXMgcGFyYSBlc3RhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGRlbGV0YXIgbyBhcnRpZ28gJXMsIGRvIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdBIENhdGVnb3JpYUlEICVTIMOpIGludsOhbGlkYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIG7Do28gZm9pIGluZm9ybWFkbyB1bSBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdMOzcmljbyBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEacOhcmlvIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdOZWNlc3PDoXJpYSBhIG9ww6fDo28gZGUgY29uZmlndXJhw6fDo28gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnT3DDp8OjbyBkZSBjb25maWd1cmHDp8OjbyBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBwcmVjaXNhIHNlciB1bSB2YWxvciBIQVNIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBvcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIGEgdmlzdWFsaXphw6fDo28gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIElkaW9tYUlEIGluZm9ybWFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnw4kgbmVjZXNzw6FyaW8gbyBub21lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0VzdGEgTGluZ3VhZ2VtIGrDoSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBhcGFnYXIgbyBpZGlvbWElIHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0xpbmd1YWdlbSBkZSBGQVEgYXR1YWxpemFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0xpbmd1YWdlbSBkZSBGQVEgYWRpY2lvbmFkYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnw5psdGltYSBhdHVhbGl6YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBkaW7Dom1pY29zIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtICVzIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBDcmlhw6fDo28gZGUgSXRlbSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgVGVtcG8gZGUgQ3JpYcOnw6NvIGRlIEl0ZW0gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBBbHRlcmHDp8OjbyBkbyBJdGVtIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGVtcG8gZGUgQWx0ZXJhw6fDo28gZGUgRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSWd1YWwgYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdTdXBlcmlvciBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdNYWlvciBvdSBpZ3VhbCBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ0luZmVyaW9yIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ01lbm9yIG91IGlndWFsIGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnTmVjZXNzaXRhIGRvIEFycXVpdm9JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnT2JyaWdhZG8gcGVsbyBzZXUgdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdKw6Egdm90b3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnUG9udHVhw6fDo28gbsOjbyBzZWxlY2Npb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ08gbWVjYW5pc21vIGRlIHZvdGHDp8OjbyBuw6NvIGVzdMOhIGhhYmlsaXRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnTyBwZXNvIGRvcyB2b3RvcyBuw6NvIGZvaSBkZWZpbmlkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgYXJ0aWdvIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0NyaWFkbyBlbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfDiSBuZWNlc3PDoXJpbyBvIEl0ZW1JRC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChjcmlhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIGRlIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ1NlbSBUaXBvIGluZm9ybWFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnVGlwbyBkZXZlIHNlciDDmmx0aW1vQ3JpYWRvIG91IMOabHRpbW9BbHRlcmFkbyBvdSBUb3AxMCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgY3JpYXIgbyBhcnF1aXZvIFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ2xpZW50ZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gQ2xpZW50ZSAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFDDumJsaWNvICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUMO6YmxpY28gKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICdOZWNlc3NpdGEgZGUgY2xhc3NpZmljYcOnw6NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnRXN0ZSBhcnRpZ28gZXN0w6EgdmF6aW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydGlnb3MgRkFRIGNyaWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBGQVEgYXR1YWxpemFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpZ29zIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRlw7pkbyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBZGljaW9uYXIgYXJ0aWdvIMOgIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvciBDU1MgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUZW1wbyBkZSBwZXJtYW7Dqm5jaWEgZW0gY2FjaGUgZG9zIGFydGlnb3MgZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByZXNzw6NvIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdWaXN1YWxpemHDp8OjbyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnUGVzcXVpc2EgZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdOw7ptZXJvIGRlIGNhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIGRhIGNhdGVnb3JpYSBwb3Igb21pc3PDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNzw6NvIGRvcyBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIHBhZHLDo28gZG9zIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBkZSBGQVEgYSBzZXJlbSBleGliaWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkZSBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNzw6NvIHBhcmEgbm92YXMgZW50cmFkYXMgbmEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBhZHLDo28gZGUgY2hhbWFkb3MgcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVGlwbyBwYWRyw6NvIGRvIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkZSBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIHBhZHLDo28gcGFyYSBvIHBhcsOibWV0cm8gZGUgUmVjdXJzbyBwYXJhIGEgaW50ZXJmYWNlIHDDumJsaWNhLiBPIHBhcsOibWV0cm8gZGUgYcOnw6NvIMOpIHVzYWRvIG5vcyBzY3JpcHRzIGRvIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIEFjw6fDtWVzIG9uZGUgdW0gYm90w6NvIGRlIGNvbmZpZ3VyYcOnw7VlcyBlc3TDoSBkaXNwb27DrXZlbCBuYSB3aWRnZXQgdGhlIG9iamVjdG9zIGxpZ2Fkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gIEVzdGFzIEFjw6fDtWVzIGRldmVtIGVzdGFyIHJlZ2lzdGFkYXMgbm9zIHNlZ3VpbnRlcyBmaWNoZWlyb3MgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRGVmaW5lIHNlIG8gdMOtdHVsbyBkbyBGQVEgZGV2ZSBzZXIgY29uY2F0ZW5hZG8gYW8gYXNzdW50byBkbyBhcnRpZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0RlZmluaXIgcXVhaXMgY29sdW5hcyBzw6NvIGFwcmVzZW50YWRhcyBubyB3aWRnZXQgZGUgRkFRIGFzc29jaWFkbyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBPYnNlcnZhw6fDo286IFNvbWVudGUgYXRyaWJ1dG9zIGRlIEZBUSBlIENhbXBvcyBEaW7Dom1pY29zIChEeW5hbWljRmllbGRfTm9tZVgpIHPDo28gcGVybWl0aWRvcyBwYXJhIENvbHVuYXMgUGFkcsOjby4gRGVmaW5pw6fDtWVzIFBvc3PDrXZlaXM6IDAgPSBJbmF0aXZvLCAxID0gQXRpdm8sIDIgPSBBdGl2YWRvIGNvbW8gcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YcOnw6NvIHBlcXVlbmEgZGUgdW0gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YXIgZGUgdW1hIHBlcXVlbmEgbGlzdGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBwZXNxdWlzYSBkZSBGQVEgcGFkcsOjbyBuYSB0ZWxhIGRlIHByb2N1cmEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgYSBpbmZvcm1hw6fDo28gYSBzZXIgaW5zZXJpZGEgbm8gY2hhbWFkbyBiYXNlYWRvIGVtIEZBUS4gIlRvZG8gbyBGQVEiIGluY2x1aSB0ZXh0bywgYW5leG9zIGUgaW1hZ2VucyBlbWJ1dGlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBwYXLDom1ldHJvcyBwYXJhIG8gYmFja2VuZCBkbyBkYXNoYm9hcmQuICJMaW1pdGUiIGRlZmluZSBvIG7Dum1lcm8gZGUgZW50cmFkYXMgZXhpYmlkYXMgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW4sIGdydXBvMSwgZ3J1cG8yKS4gIlBhZHLDo28iIGluZGljYSBzZSBvIHBsdWdpbiDDqSBoYWJpbGl0YWRvIHBvciBwYWRyw6NvIG91IHNlIG8gdXN1w6FyaW8gcHJlY2lzYSBoYWJpbGl0w6EtbG8gbWFudWFsbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBHZXJlbmNpYWRvciBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBqb3JuYWwgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBuYSBwZXNxdWlzYSBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZSBvbmRlIG8gbGluayAiSW5zZXJpciBGQVEiIHNlcsOhIGV4aWJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluacOnw6NvIGRlIGNhbXBvcyBkZSB0ZXh0byBsaXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnRXhjbHVpciBlc3RlIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBhZGnDp8OjbyBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyID0gSGFiaWxpdGFkbyBlIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgZWRpw6fDo28gZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMiA9IEhhYmlsaXRhZG8gZSByZXF1ZXJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdmlzw6NvIGdlcmFsIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyID0gSGFiaWxpdGFkbyBlIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdmlzw6NvIGdlcmFsIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMiA9IEhhYmlsaXRhZG8gZSByZXF1ZXJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgaW1wcmVzc8OjbyBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIGltcHJlc3PDo28gZGUgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIGltcHJlc3PDo28gZGUgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMiA9IEhhYmlsaXRhZG8gZSBleGliaWRvIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8sIDIgPSBIYWJpbGl0YWRvIGUgZXhpYmlkbyBwb3IgcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBwZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8sIDIgPSBIYWJpbGl0YWRvIGUgZXhpYmlkbyBwb3IgcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgdmlzw6NvIGdlcmFsIGRlIEZBUSBlbSBmb3JtYXRvIHBlcXVlbm8gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgZGV0YWxoZXMgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIGRldGFsaGVzIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIGRldGFsaGVzIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgdsOhcmlvcyBpZGlvbWFzIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICdBdGl2YXIgb3MgcmVjdXJzb3MgZGVzc2UgYXJ0aWdvIHBhcmEgYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciBtZWNhbmlzbW8gZGUgQXZhbGlhw6fDo28gbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXhwbG9yYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZW0gUmljaHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ8OBcmVhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdEZWxldGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ2ltcHJpbWlyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkbyBKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdGUgZGUgRkFRcyBwb3IgcMOhZ2luYSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIGJ1c2NhIHNlcnZpZG9yIHJvdGVhZG9yIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgbyBub21lIGRlIGNhZGEgY2FtcG8gZW0gdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBwZXNxdWlzYSByw6FwaWRhIGRldmUgc2VyIG1vc3RyYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdMaW1pdGUgcGFyYSBhIHBlc3F1aXNhIGNvbnN0cnVpciBhIGxpc3RhIGRlIHBhbGF2cmFzLWNoYXZlIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RlIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZG8gbm9tZXMgZGUgZmlsYXMgcGFyYSBvcyBxdWFpcyBvIHJlY3Vyc28gZGVzc2UgYXJ0aWdvIGVzdMOhIGF0aXZhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRvcyB0aXBvcyBkZSBlc3RhZG8gcXVlIHBvZGUgc2VyIHV0aWxpemFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gam9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5vIEpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlcmFyIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBwZXNxdWlzYXMgY3VydGFzIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3ZvIGFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgYWx0ZXJhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3Mgbm8gcmVjdXJzbyB0b3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTGltaXRlIGRlIHNhw61kYSBwYXJhIG9zIGFydGlnb3MgZGVzc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIHBlcXVlbmEgZG8gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdab29tIGVtIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnQnVzY2EgRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0NvbmRpw6fDo28gcGFyYSBhIGF2YWxpYcOnw6NvLiBDaGF2ZSBkZXZlIHNlciBlbSBwZXJjZW50dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUGVzcXVpc2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdTZWxlY2lvbmUgcXVhbnRvcyBpdGVucyBkZXZlbSBzZXIgbW9zdHJhZG9zIG5hIHZpc8OjbyBnZXJhbCBkbyBkacOhcmlvICJTbWFsbCIgcG9yIHBhZHLDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnU2VsZWNpb25lIHF1YW50b3MgaXRlbnMgZGV2ZW0gc2VyIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgIlNtYWxsIiBwb3IgcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIHBhZHLDo28gKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIG5vIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgcGFkcsOjbyAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3MgZW0gQ3VzdG9tZXJGQVFab29tIChlIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgbcOheGltYSAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3Mgbm8gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBtw6F4aW1hIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBlbSBDdXN0b21lckZBUVpvb20gKGUgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEgZSBsaW5rIiAvICJJbnNlcmlyIHRvZG8gbyBGQVEgZSBsaW5rIiBlbSBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIEFydGlnb3MgZGUgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEiIC8gIkluc2VyaXIgdG9kbyBvIEZBUSIgZW0gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYXIgaXRlbnMgaW52w6FsaWRvcyBubyByZXN1bHRhZG8gZG8gRXhwbG9yYWRvciBkZSBGQVEgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ01vc3RyYXIgaXRlbnMgZGUgc3ViY2F0ZWdvcmlhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBhcyDDumx0aW1hcyBhbHRlcmHDp8O1ZXMgZGUgaXRlbnMgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIMO6bHRpbW9zIGl0ZW5zIGNyaWFkb3MgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyAxMCBpdGVucyBzdXBlcmlvciBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgdm90YcOnw6NvIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgbGlnYXIgdW0gRkFRIGNvbSBvdXRybyBvYmpldG8gbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBleGNsdWlyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgdm9sdGFyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU2ludG9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdBcGVuYXMgdGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTyBpZGlvbWEgcGFkcsOjbyBwYXJhIG9zIGFydGlnb3MgZGVzc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgcGFyYSB1bSBGQVEsIGV4ZW1wbG8gRkFRICMgS0IgIyAjIE15RkFRLiBPIHBhZHLDo28gw6kgRkFRICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0NoYW1hZG9cJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnQ2hhbWFkb1wnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDb3JwbyBkbyBjaGFtYWRvIHBhcmEgYXByb3Zhw6fDo28gZGUgdW0gYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ08gYXNzdW50byBkbyBjaGFtYWRvIHBhcmEgYXByb3Zhw6fDo28gZGUgdW0gYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0l0ZW0gZGEgYmFycmEgZGUgZmVycmFtZW50YXMgcGFyYSB1bSBhdGFsaG8uICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncMO6YmxpY28gKHDDumJsaWNvKSc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW1hIGNhdGVnb3JpYSDDqSBuZWNlc3PDoXJpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFeGNsdWlyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0FsdGVyYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2lvbmUgcGVsbyBtZW5vcyB1bSBncnVwbyBkZSBwZXJtaXNzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGF0ZW5kZW50ZXMgcXVlIHBvZGVtIGFjZXNzYXIgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXLDoSBleGliaWRvIGNvbW8gY29tZW50w6FyaW8gbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBhcGFnYXIgZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnVm9jw6ogbsOjbyBwb2RlIHJlbW92ZXIgZXNzYSBjYXRlZ29yaWEuIEVsYSDDqSB1dGlsaXphZGEgcG9yIHBlbG8gbWVub3MgdW0gQXJ0aWdvIGRhIEZBUSBlL291IMOpIHBhaSBkZSBwZWxvIG1lbm9zIHVtYSBvdXRyYSBjYXRlZ29yaWEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHV0aWxpemFkYSBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocykgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIMOpIHBhaSBkYXMgc2VndWludGVzIHN1YmNhdGVnb3JpYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3RlIGFydGlnbyBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYXIgYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQnVzY2EgUsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnQ29yaW5nYXMgc8OjbyBwZXJtaXRpZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdQZXNxdWlzYSBBdmFuw6dhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3JpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWdvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdTdWJjYXRlZ29yaWFzIG7Do28gZW5jb250cmFkYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0w7NyaWNvIGRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgZGFkb3MgZGUgSm9ybmFsIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJZGlvbWFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVc2UgZXNzZSByZWN1cnNvIHNlIHZvY8OqIGRlc2VqYSB0cmFiYWxoYXIgY29tIG3Dumx0aXBsb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdFeGNsdWlyIGlkaW9tYSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgSWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBleGNsdWlyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdWb2PDqiBuw6NvIHBvZGUgZXhjbHVpciBlc3RlIGlkaW9tYS4gRWxlIMOpIHVzYWRvIGVtIHBlbG8gbWVub3MgdW0gYXJ0aWdvIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSDDqSB1c2FkbyBub3Mgc2VndWludGVzIGFydGlnbyhzKSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWdvcyBGQVEgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1BhbGF2cmEtY2hhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdG8gKGV4LiBJZ3VhbCBhIDEwIG91IG1haW9yIHF1ZSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnUG9udHVhw6fDo28gKGV4LiBJZ3VhbCBhIDI1JSBvdSBtYWlvciBxdWUgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm92YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0FsdGVyYWRvIHBlbGEgw7psdGltYSB2ZXogcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSG9yw6FyaW8gZGUgY3JpYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEgKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnSG9yw6FyaW8gZGUgY3JpYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0hvcsOhcmlvIGRlIGFsdGVyYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEgKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoZW50cmUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1UZXh0b0NvbXBsZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQnVzY2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnU2VsZcOnw6NvIGRlIHBlcmZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnU2VtIGNvbmZpZ3VyYcOnw7VlcyBkZSB2b3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnVm90b3MgZXNwZWPDrWZpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2V4LiBJZ3VhbCBhIDEwIG91IG1haW9yIHF1ZSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnUG9udHVhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1NlbSBjb25maWd1cmHDp8O1ZXMgZGUgcG9udHVhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ1BvbnR1YcOnw6NvIGVzcGVjw61maWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZXguIElndWFsIGEgMjUlIG91IG1haW9yIHF1ZSA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdIb3LDoXJpbyBkZSBjcmlhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0hvcsOhcmlvIGRlIGFsdGVyYcOnw6NvIGRlIGFydGlnbyBkZSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdOb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnZGUgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05lbmh1bSB2b3RvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISBTZWphIG8gcHJpbWVpcm8gYSBhdmFsaWFyIGVzdGUgYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0JhaXhhciBhbmV4b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQYXJhIGFicmlyIGxpbmtzIG5vcyBibG9jb3MgZGUgZGVzY3Jpw6fDo28gc2VndWludGVzLCB0YWx2ZXogdm9jw6ogcHJlY2lzZSBwcmVzc2lvbmFyIEN0cmwsIENtZCBvdSBTaGlmdCBlbnF1YW50byBjbGljYSBubyBsaW5rIChkZXBlbmRlbmRvIGRvIHNldSBuYXZlZ2Fkb3Igb3Ugc2lzdGVtYSBvcGVyYWNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnRXN0ZSBhcnRpZ28gdGUgYWp1ZG91Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3BvdWNvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211aXRvIMO6dGlsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBZGljaW9uYXIgYXNzdW50byBubyBhcnRpZ28gZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdJbnNlcmlyIHRleHRvIGRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcmlyIHRvZG8gbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJpciBsaW5rIGRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5zZXJpciB0ZXh0byBkbyBGQVEgZSBsaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdJbnNlcmlyIHRvZG8gbyBGQVEgZSBsaW5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmVuaHVtIGFydGlnbyBGQVEgZW5jb250cmFkby4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdJc3NvIHBvZGUgc2VyIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIHJlc3VsdGFkb3Mgw7p0ZWlzIHBhcmEgbyBhc3N1bnRvIG91IHRleHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnSW5zaXJhIHVtIGFzc3VudG8gb3UgdGV4dG8gcGFyYSBsaXN0YXIgb3MgcmVjdXJzb3Mgw7p0ZWlzLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUGVzcXVpc2EgY29tcGxldGEgZGUgdGV4dG9zIGVtIGFydGlnb3MgRkFRIChwb3IgZXhlbXBsbywgIkpvKm8iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjb20gdm90b3MuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmnDp8O1ZXMgZGUgcG9udHVhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnQXBlbmFzIGFydGlnb3MgZGUgRkFRIGNvbSBwb250dWHDp8Ojby4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnQXBlbmFzIGFydGlnb3MgZGUgRkFRIGNyaWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQXBlbmFzIGFydGlnb3MgZGUgRkFRIGNyaWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnUGVyZmlsIGRlIHBlc3F1aXNhIGNvbW8gbW9kZWxvPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gQXJ0aWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnUHJvY3VyZSBwb3IgYXJ0aWdvcyBjb20gcGFsYXZyYXMtY2hhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1ZvbHRhciBwYXJhIGEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdWb2PDqiBwcmVjaXNhIGRlIHBlcm1pc3PDo28gcnchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZGFzIGNhdGVnb3JpYXMgb25kZSBvIHVzdcOhcmlvIHBvc3N1YSBwZXJtaXNzw6NvIGRlIGxlaXR1cmEgZSBlc2NyaXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdOw6NvIGZvaSBlbmNvbnRyYWRvIHVtIGlkaW9tYSBwYWRyw6NvIGUgdMOjbyBwb3VjbyBjcmlhciB1bSBub3ZvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ05lY2Vzc8OhcmlhIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VtYSBjYXRlZ29yaWEgcHJlY2lzYSB0ZXIgdW0gbm9tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIGrDoSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXNzYSBjYXRlZ29yaWEgasOhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW1hIENhdGVnb3J5SUQgZm9pIGluZm9ybWFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4Y2x1aXIgYSBjYXRlZ29yaWEgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdGVnb3JpYSBkZSBGQVEgYXR1YWxpemFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdGVnb3JpYSBkZSBGQVEgYWRpY2lvbmFkYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIEl0ZW1JRCBmb2kgaW5mb3JtYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ1ZvY8OqIG7Do28gcG9zc3XDrSBpbmZvcm1hw6fDtWVzIHBhcmEgZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBkZWxldGFyIG8gYXJ0aWdvICVzLCBkbyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQSBDYXRlZ29yaWFJRCAlUyDDqSBpbnbDoWxpZGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBoaXN0w7NyaWNvLCBuw6NvIGZvaSBpbmZvcm1hZG8gdW0gSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0hpc3TDs3JpY28gZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdOZWNlc3PDoXJpYSBhIG9ww6fDo28gZGUgY29uZmlndXJhw6fDo28gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnT3DDp8OjbyBkZSBjb25maWd1cmHDp8OjbyBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBwcmVjaXNhIHNlciB1bSB2YWxvciBIQVNIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBvcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIGEgdmlzdWFsaXphw6fDo28gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIElkaW9tYUlEIGluZm9ybWFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTyBub21lIMOpIG9icmlnYXTDs3JpbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFc3NlIGlkaW9tYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgYXBhZ2FyIG8gaWRpb21hJSBzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdJZGlvbWEgZGUgRkFRIGF0dWFsaXphZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdJZGlvbWEgZGUgRkFRIGFkaWNpb25hZG8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ8OabHRpbWEgYXR1YWxpemHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdDYW1wb3MgZGluw6JtaWNvcyBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ05lbmh1bSAlcyBpbmZvcm1hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBjYXJyZWdhciBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVuaHVtIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8OjbyBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgVGVtcG8gZGUgQ3JpYcOnw6NvIGRlIEl0ZW0gKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIFRlbXBvIGRlIENyaWHDp8OjbyBkZSBJdGVtIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgVGVtcG8gZGUgQWx0ZXJhw6fDo28gZG8gSXRlbSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnTWFpb3IgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdNYWlvci1pZ3VhbCBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTWVub3IgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdNZW5vci1pZ3VhbCBxdWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnTmVjZXNzaXRhIGRvIEFycXVpdm9JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnT2JyaWdhZG8gcG9yIHNldSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1ZvY8OqIGrDoSB2b3RvdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOZW5odW1hIHBvbnR1YcOnw6NvIHNlbGVjaW9uYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdPIG1lY2FuaXNtbyBkZSB2b3Rhw6fDo28gbsOjbyBlc3TDoSBoYWJpbGl0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ08gcGVzbyBkb3Mgdm90b3MgbsOjbyBmb2kgZGVmaW5pZG8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGFydGlnbyBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcmlhZG8gZW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnTmVjZXNzaXRhIGRvIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgZGEgRkFRIChyZWPDqW0gY3JpYWRvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgZGEgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIGRhIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ1NlbSBUaXBvIGluZm9ybWFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnVGlwbyBkZXZlIHNlciDDmmx0aW1vQ3JpYWRvIG91IMOabHRpbW9BbHRlcmFkbyBvdSBUb3AxMCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgY3JpYXIgbyBhcnF1aXZvIFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ2xpZW50ZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gQ2xpZW50ZSAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFDDumJsaWNvICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUMO6YmxpY28gKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICdVbWEgcHJvcG9yw6fDo28gw6kgbmVjZXNzw6FyaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdPIGFydGlnbyBlc3TDoSB2YXppbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnQXJ0aWdvcyBkYSBGQVEgY3JpYWRvcyByZWNlbnRlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlnb3MgZGEgRkFRIGF0dWFsaXphZG9zIHJlY2VudGVtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpZ29zIGRhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRlw7pkbyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAncMO6YmxpY28nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb3IgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUZW1wbyBkZSBleHBpcmHDp8OjbyBkZSBjYWNoZSBwYXJhIGl0ZW5zIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWm9vbSBlbSBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYSBlbSBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0ZBUSBkZSBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ2FzYXMgZGVjaW1haXMgZG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgcGFkcsOjbyBkYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcGFkcsOjbyBwYXJhIG9zIGFydGlnb3MgRkFRIG5vIG1vZG8gZGUgaWRpb21hIMO6bmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIHBhZHLDo28gZG9zIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBkZSBGQVEgYSBzZXJlbSBleGliaWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkZSBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcGFkcsOjbyBkZSBlbnRyYWRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1RpcG8gcGFkcsOjbyBkbyBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZGUgYXJ0aWdvcyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwYWRyw6NvIHBhcmEgbyBwYXLDom1ldHJvIGRlIFJlY3Vyc28gcGFyYSBhIGludGVyZmFjZSBww7pibGljYS4gTyBwYXLDom1ldHJvIGRlIGHDp8OjbyDDqSB1c2FkbyBub3Mgc2NyaXB0cyBkbyBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIEHDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5vIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlPSJjb21wbGV4IikuIE9ic2VydmUgcXVlIGVzc2FzIGHDp8O1ZXMgZGV2ZW0gdGVyIHJlZ2lzdHJhZG8gb3Mgc2VndWludGVzIGFycXVpdm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRGVmaW5lIHNlIG8gdMOtdHVsbyBkbyBGQVEgZGV2ZSBzZXIgY29uY2F0ZW5hZG8gYW8gYXNzdW50byBkbyBhcnRpZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdWFsaXphw6fDo28gcGVxdWVuYSBkZSB1bSBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdWFsaXphciBkZSB1bWEgcGVxdWVuYSBsaXN0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIHBlc3F1aXNhIGRlIEZBUSBwYWRyw6NvIG5hIHRlbGEgZGUgcHJvY3VyYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGluZm9ybWHDp8OjbyBhIHNlciBpbnNlcmlkYSBubyBjaGFtYWRvIGJhc2VhZG8gZW0gRkFRLiAiVG9kbyBvIEZBUSIgaW5jbHVpIHRleHRvLCBhbmV4b3MgZSBpbWFnZW5zIGVtYnV0aWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5lIG9zIHBhcsOibWV0cm9zIHBhcmEgbyBiYWNrZW5kIGRvIGRhc2hib2FyZC4gIkxpbWl0ZSIgZGVmaW5lIG8gbsO6bWVybyBkZSBlbnRyYWRhcyBleGliaWRhcyBwb3IgcGFkcsOjby4gIkdydXBvIiDDqSB1c2FkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleC46IEdydXBvOiBhZG1pbiwgZ3J1cG8xLCBncnVwbzIpLiAiUGFkcsOjbyIgaW5kaWNhIHNlIG8gcGx1Z2luIMOpIGhhYmlsaXRhZG8gcG9yIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGhhYmlsaXTDoS1sbyBtYW51YWxtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIEdlcmVuY2lhZG9yIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIGpvcm5hbCBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5hIHBlc3F1aXNhIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lIG9uZGUgbyBsaW5rICJJbnNlcmlyIEZBUSIgc2Vyw6EgZXhpYmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pw6fDo28gZGUgY2FtcG9zIGRlIHRleHRvIGxpdnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdFeGNsdWlyIGVzdGUgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIGFkacOnw6NvIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8sIDIgPSBIYWJpbGl0YWRvIGUgcmVxdWVyaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBlZGnDp8OjbyBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyID0gSGFiaWxpdGFkbyBlIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8sIDIgPSBIYWJpbGl0YWRvIGUgcmVxdWVyaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgZGUgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyID0gSGFiaWxpdGFkbyBlIHJlcXVlcmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBpbXByZXNzw6NvIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgaW1wcmVzc8OjbyBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgaW1wcmVzc8OjbyBkZSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBwZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLCAyID0gSGFiaWxpdGFkbyBlIGV4aWJpZG8gcG9yIHBhZHLDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBwZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMiA9IEhhYmlsaXRhZG8gZSBleGliaWRvIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuIENvbmZpZ3VyYcOnw7VlcyBwb3Nzw612ZWlzOiAwID0gRGVzYWJpbGl0YWRvLCAxID0gSGFiaWxpdGFkbywgMiA9IEhhYmlsaXRhZG8gZSBleGliaWRvIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSB2aXPDo28gZ2VyYWwgZGUgRkFRIGVtIGZvcm1hdG8gcGVxdWVubyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBkZXRhbGhlcyBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgZGV0YWxoZXMgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLiBDb25maWd1cmHDp8O1ZXMgcG9zc8OtdmVpczogMCA9IERlc2FiaWxpdGFkbywgMSA9IEhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgZGV0YWxoZXMgZGUgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQ29uZmlndXJhw6fDtWVzIHBvc3PDrXZlaXM6IDAgPSBEZXNhYmlsaXRhZG8sIDEgPSBIYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciB2w6FyaW9zIGlkaW9tYXMgbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ0F0aXZhciBvcyByZWN1cnNvcyBkZXNzZSBhcnRpZ28gcGFyYSBhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIG1lY2FuaXNtbyBkZSBBdmFsaWHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3Jhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZW0gUmljaHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ8OBcmVhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdEZWxldGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ2ltcHJpbWlyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnTGltaXRlIGRlIEZBUXMgcG9yIHDDoWdpbmEgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkbyBKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdMaW1pdGUgZGUgRkFRcyBwb3IgcMOhZ2luYSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIGJ1c2NhIHNlcnZpZG9yIHJvdGVhZG9yIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgbyBub21lIGRlIGNhZGEgY2FtcG8gZW0gdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBwZXNxdWlzYSByw6FwaWRhIGRldmUgc2VyIG1vc3RyYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RlIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZG8gbm9tZXMgZGUgZmlsYXMgcGFyYSBvcyBxdWFpcyBvIHJlY3Vyc28gZGVzc2UgYXJ0aWdvIGVzdMOhIGF0aXZhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRvcyB0aXBvcyBkZSBlc3RhZG8gcXVlIHBvZGUgc2VyIHV0aWxpemFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gam9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5vIEpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlcmFyIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBwZXNxdWlzYXMgY3VydGFzIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOb3ZvIGFydGlnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgYWx0ZXJhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3Mgbm8gcmVjdXJzbyB0b3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTGltaXRlIGRlIHNhw61kYSBwYXJhIG9zIGFydGlnb3MgZGVzc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIHBlcXVlbmEgZG8gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdab29tIGVtIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnQnVzY2EgRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0NvbmRpw6fDo28gcGFyYSBhIGF2YWxpYcOnw6NvLiBDaGF2ZSBkZXZlIHNlciBlbSBwZXJjZW50dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUGVzcXVpc2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIHBhZHLDo28gKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIG5vIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgcGFkcsOjbyAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3MgZW0gQ3VzdG9tZXJGQVFab29tIChlIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgbcOheGltYSAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3Mgbm8gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBtw6F4aW1hIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBlbSBDdXN0b21lckZBUVpvb20gKGUgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEgZSBsaW5rIiAvICJJbnNlcmlyIHRvZG8gbyBGQVEgZSBsaW5rIiBlbSBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIEFydGlnb3MgZGUgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEiIC8gIkluc2VyaXIgdG9kbyBvIEZBUSIgZW0gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnTW9zdHJhciBpdGVucyBkZSBzdWJjYXRlZ29yaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFzIMO6bHRpbWFzIGFsdGVyYcOnw7VlcyBkZSBpdGVucyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3Mgw7psdGltb3MgaXRlbnMgY3JpYWRvcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIDEwIGl0ZW5zIHN1cGVyaW9yIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciB2b3Rhw6fDo28gZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBsaWdhciB1bSBGQVEgY29tIG91dHJvIG9iamV0byBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGV4Y2x1aXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBpbXByaW1pciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTaW50b21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ0FwZW5hcyB0ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdPIGlkaW9tYSBwYWRyw6NvIHBhcmEgb3MgYXJ0aWdvcyBkZXNzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIEZBUSwgZXhlbXBsbyBGQVEgIyBLQiAjICMgTXlGQVEuIE8gcGFkcsOjbyDDqSBGQVEgIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnQ2hhbWFkb1wnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0NvcnBvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnSXRlbSBkYSBiYXJyYSBkZSBmZXJyYW1lbnRhcyBwYXJhIHVtIGF0YWxoby4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYXRlbmRlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfQndGD0LbQvdC+INCy0YvQsdGA0LDRgtGMINC60LDRgtC10LPQvtGA0LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60LDRgtC10LPQvtGA0LjRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQo9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9C+0LTRgNCw0LfQtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQo9C60LDQttC40YLQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdGDINCz0YDRg9C/0L/Rgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0L/RiyDQsNCz0LXQvdGC0L7Qsiwg0LjQvNC10Y7RidC40YUg0LTQvtGB0YLRg9C/INC6INGB0YLQsNGC0YzRj9C8INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQsiBFeHBsb3JlciDQutCw0Log0LrQvtC80LzQtdC90YLQsNGA0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0K3RgtGDINC60LDRgtC10LPQvtGA0LjRjiDRg9C00LDQu9GP0YLRjCDQvdC10LvRjNC30Y8hINCSINC90LXQuSDRgdC+0LTQtdGA0LbQuNGC0YHRjyDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSDQuC/QuNC70Lgg0L7QvdCwINGP0LLQu9GP0LXRgtGB0Y8g0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC00LvRjyDQtNGA0YPQs9C40YUg0LrQsNGC0LXQs9C+0YDQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn0JIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LzQtdGO0YLRgdGPINGB0LvQtdC00YPRjtGJ0LjQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ9Ct0YLQsCDQutCw0YLQtdCz0L7RgNC40Y8g0Y/QstC70Y/QtdGC0YHRjyDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LTQu9GPINGB0LvQtdC00YPRjtGJ0LjRhSDQv9C+0LTRgNCw0LfQtNC10LvQvtCyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0LggRkFRISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSDQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ9CR0YvRgdGC0YDRi9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ9Cg0LDQt9GA0LXRiNC10L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSDRgdC40LzQstC+0LvQvtCyINGI0LDQsdC70L7QvdCwINGC0LjQv9CwIFwnKlwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTRgNCw0LfQtNC10LvRiyDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LTQu9GPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ9CU0LDQvdC90YvRhSDQttGD0YDQvdCw0LvQsCBGQVEg0L3QtdGCLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRjdGC0YMg0YTRg9C90LrRhtC40Y4g0L/RgNC4INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGA0LDQsdC+0YLRiyDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ9Cj0LTQsNC70LjRgtGMINGP0LfRi9C6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7Qs9C+INGP0LfRi9C60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ9Ct0YLQvtGCINGP0LfRi9C6INGD0LTQsNC70Y/RgtGMINC90LXQu9GM0LfRjy4g0J3QsCDQvdGR0Lwg0L3QsNC/0LjRgdCw0L3QsCDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQrdGC0L7RgiDRj9C30YvQuiDQuNGB0L/QvtC70YzQt9C+0LLQsNC9INCyINGB0LvQtdC00YPRjtGJ0LjRhSDRgdGC0LDRgtGM0Y/RhSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LrQvtC90YLQtdC60YHRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1IEZBUSDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICfQmtC70Y7Rh9C10LLQvtC1INGB0LvQvtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ9CT0L7Qu9C+0YHQvtCy0LDQvdC40LUgKNC90LDQv9GA0LjQvNC10YAsINGA0LDQstC90L4gMTAg0LjQu9C4INCx0L7Qu9C10LUg0YfQtdC8IDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfQntGG0LXQvdC40YLRjCAo0L3QsNC/0YDQuNC80LXRgCwg0YDQsNCy0L3QviAyNSUg0LjQu9C4INCx0L7Qu9C10LUg0YfQtdC8IDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICfQo9GC0LLQtdGA0LbQtNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9C+0YHQu9C10LTQvdC40Lwg0LjQt9C80LXQvdC40LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LTQvi/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LzQtdC20LTRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNGPINC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQtNC+L9C/0L7RgdC70LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ9CS0YDQtdC80Y8g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC80LXQttC00YMpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ9Cf0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0Lkg0L/QvtC40YHQuiDQsiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICfQn9C+0LjRgdC6INCyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ9CS0YvQsdC+0YAg0YjQsNCx0LvQvtC90LAg0L/QvtC40YHQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQk9C+0LvQvtGB0L7QstCw0YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8g0L3QtSDQt9Cw0LTQsNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICfQntC/0YDQtdC00LXQu9C10L3QvdGL0LUg0LPQvtC70L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ9C90LDQv9GA0LjQvNC10YAsINGA0LDQstC90L4gMTAg0LjQu9C4INCx0L7Qu9C10LUg0YfQtdC8IDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICfQntGG0LXQvdC40YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC00LvRjyDQvtGG0LXQvdC60Lgv0YDQtdC50YLQuNC90LPQsCDQvdC1INC30LDQtNCw0L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAn0J7Qv9GA0LXQtNC10LTQtdC70LXQvdC90YvQtSDQvtGG0LXQvdC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfQvdCw0L/RgNC40LzQtdGALCDRgNCw0LLQvdC+IDI1JSDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfQktGA0LXQvNGPINC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGM0LggRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQntGG0LXQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICfQuNC3IDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfQk9C+0LvQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn0JPQvtC70L7RgdC+0LIg0L3QtSDQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9Ce0YbQtdC90L7QuiDQvdC1INC90LDQudC00LXQvdC+ISDQntGG0LXQvdC40YLQtSDRjdGC0YMg0YHRgtCw0YLRjNGOIEZBUSDQv9C10YDQstGL0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQodC60LDRh9Cw0YLRjCDQstC70L7QttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAn0JTQu9GPINC+0YLQutGA0YvRgtC40Y8g0YHRgdGL0LvQutC4INCyINGB0LvQtdC00YPRjtGJ0LXQvCDRgdC+0L7QsdGJ0LXQvdC40Lgv0LfQsNC80LXRgtC60LUg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L3QsNC20LDRgtGMINC4INGD0LTQtdGA0LbQuNCy0LDRgtGMINC60LvQsNCy0LjRiNGDIEN0cmwg0LjQu9C4IENtZCDQuNC70LggU2hpZnQg0Lgg0LrQu9C40LrQvdGD0YLRjCDQv9C+INGB0YHRi9C70LrQtSAo0LfQsNCy0LjRgdC40YIg0L7RgiDQstCw0YjQtdCz0L4g0LHRgNCw0YPQt9C10YDQsCDQuCDQntChKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfQndCw0YHQutC+0LvRjNC60L4g0LHRi9C70LAg0L/QvtC70LXQt9C90LAg0Y3RgtCwINGB0YLQsNGC0YzRjz8g0J/QvtC20LDQu9GD0LnRgdGC0LAsINC+0YbQtdC90LjRgtC1INC10ZEsINGH0YLQvtCx0Ysg0LzRiyDQvNC+0LPQu9C4INGD0LvRg9GH0YjQuNGC0Ywg0LHQsNC30YMgRkFRLiDQodC/0LDRgdC40LHQviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfQsdC10YHQv9C+0LvQtdC30L3QsNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ9C+0YfQtdC90Ywg0L/QvtC70LXQt9C90LDRjyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAn0JTQvtCx0LDQstC40YLRjCDQt9Cw0LPQvtC70L7QstC+0Log0Log0YHRgtCw0YLRjNC1IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0L/QvtC70L3QvtGB0YLRjNGOIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGB0YHRi9C70LrRgyDQvdCwIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSDQuCDRgdGB0YvQu9C60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0L/QvtC70L3QvtGB0YLRjNGOIEZBUSDQuCDRgdGB0YvQu9C60YMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfQodGC0LDRgtGM0LggRkFRINC90LUg0L3QsNC50LTQtdC90YsuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAn0K3RgtC+INC80L7QttC10YIg0LHRi9GC0Ywg0JLQsNC8INC/0L7Qu9C10LfQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfQndC10YIg0L/QvtC70LXQt9C90YvRhSDRgdGC0LDRgtC10Lkg0L3QsCDRjdGC0YMg0YLQtdC80YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQktCy0LXQtNC40YLQtSDRgtC10LzRgyDQuNC70Lgg0YLQtdC60YHRgiDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDQv9C+0LvQtdC30L3Ri9GFINGB0L/RgNCw0LLQvtGH0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICfQn9C+0LvQvdC+0YLQtdC60YHRgtC+0LLRi9C5INC/0L7QuNGB0Log0LIg0YHRgtCw0YLRjNGP0YUgRkFRICjQvdCw0L/RgNC40LzQtdGALCAi0LDQstGC0L7QvCrQutC4IiDQuNC70LggItCc0L7RgdC6KiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQvdCwINCz0L7Qu9C+0YHQvtCy0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRINGBINCz0L7Qu9C+0YHQsNC80LguLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC+0YbQtdC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfQotC+0LvRjNC60L4g0YHRgtCw0YLRjNC4IEZBUSDRgSDQvtGG0LXQvdC60L7QuS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAn0KLQvtC70YzQutC+INGB0YLQsNGC0YzQuCBGQVEg0YHQvtC30LTQsNC90L3Ri9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRLCDRgdC+0LfQtNCw0L3QvdGL0LUg0LzQtdC20LTRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0L/QsNGA0LDQvNC10YLRgNGLINC/0L7QuNGB0LrQsCDQutCw0Log0YjQsNCx0LvQvtC9Pyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0YHRgtCw0YLRjNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn0J/QvtC40YHQuiDRgdGC0LDRgtC10Lkg0L/QviDQutC70Y7Rh9C10LLQvtC80YMg0YHQu9C+0LLRgyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICfQntCx0YnQtdC00L7RgdGC0YPQv9C90L7QtSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0JLQtdGA0L3Rg9GC0YzRgdGPINCyINC+0LHQt9C+0YAgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfQndC10L7QsdGF0L7QtNC40LzRiyDQv9GA0LDQstCwIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAn0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQutCw0YLQtdCz0L7RgNC40Lgg0LIg0LrQvtGC0L7RgNGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC40LzQtdC10YIg0L/RgNCw0LLQsCDRh9GC0LXQvdC40Y8v0LfQsNC/0LjRgdC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICfQndC1INGD0LrQsNC30LDQvSDRj9C30YvQuiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQuCDQvdC10LLQvtC30LzQvtC20L3QviDQt9Cw0LTQsNGC0Ywg0L3QvtCy0YvQuS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0KMg0LrQsNGC0LXQs9C+0YDQuNC4INC00L7Qu9C20L3QviDQsdGL0YLRjCDQvdCw0LfQstCw0L3QuNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn0KLQsNC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ci0LDQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdDYXRlZ29yeUlEINC90LUg0LfQsNC00LDQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4gJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyBGQVEg0LjQt9C80LXQvdC10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyBGQVEg0LTQvtCx0LDQstC70LXQvdCwISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC1INGD0LrQsNC30LDQvSBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAn0KMg0LLQsNGBINC90LXRgiDQv9GA0LDQsiDQvdCwINC00L7RgdGC0YPQvyDQuiDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YPQtNCw0LvQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlcyDQvdC10LLQtdGA0LXQvS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC40YHRgtC+0YDQuNGOLCDRgtCw0Log0LrQsNC6INC90LUg0LfQsNC00LDQvSBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAn0JjRgdGC0L7RgNC40Y8gRkFRICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ9CW0YPRgNC90LDQuyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80L4g0L3QsNGB0YLRgNC+0LjRgtGMINC/0LDRgNCw0LzQtdGC0YAgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgCBGQVE6OkZyb250ZW5kOjpPdmVydmlldyAtINGC0YDQtdCx0YPQtdGC0YHRjyDRgdGB0YvQu9C60LAg0L3QsCBIQVNIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ9Cd0LUg0L3QsNGB0YLRgNC+0LXQvSDQvtCx0LfQvtGAICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ0xhbmd1YWdlSUQg0L3QtSDQt9Cw0LTQsNC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICfQndC10L7QsdGF0L7QtNC40LzQviDQt9Cw0LTQsNGC0Ywg0L3QsNC30LLQsNC90LjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQotCw0LrQvtC5INGP0LfRi9C6INGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDRj9C30YvQuiAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn0K/Qt9GL0Log0LTQu9GPIEZBUSDQuNC30LzQtdC90ZHQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ9Cv0LfRi9C6INC00LvRjyBGQVEg0LTQvtCx0LDQstC70LXQvSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn0J/QvtGB0LvQtdC00L3QtdC1INC+0LHQvdC+0LLQu9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQtNC70Y8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICclcyDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ9C90LXQstC+0LfQvNC+0LbQvdC+INC30LDQs9GA0YPQt9C40YLRjCBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdGCINGA0LXQt9GD0LvRjNGC0LDRgtCwL9Cg0LXRiNC10L3QuNGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QuNC8INC40LfQvNC10L3QuNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC00L4v0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC80LXQttC00YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LTQvi/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNGPINC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQvNC10LbQtNGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICfRgNCw0LLQvdGP0LXRgtGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAn0LHQvtC70YzRiNC1INGH0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ9C80LXQvdGM0YjQtSDRh9C10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ9C80LXQvdGM0YjQtSDQuNC70Lgg0YDQsNCy0L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQodC/0LDRgdC40LHQviDQt9CwINCy0LDRiNGDINC+0YbQtdC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfQktGLINGD0LbQtSDQv9C+0YHRgtCw0LLQuNC70Lgg0L7RhtC10L3QutGDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Ce0YbQtdC90LrQsCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfQnNC10YXQsNC90LjQt9C8INCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8g0L3QtSDQstC60LvRjtGH0LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfQn9GA0LXQtNC10LvRjNC90YvQuSDRg9GA0L7QstC10L3RjCDQtNC70Y8g0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQvdC1INC30LDQtNCw0L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ9Cf0LXRh9Cw0YLRjCDRgdGC0LDRgtGM0LggRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQvtC30LTQsNC90LAg0LzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAo0L3QvtCy0YvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKNC+0LHQvdC+0LLQu9GR0L3QvdGL0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICfQndC1INGD0LrQsNC30LDQvSDQotC40L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ9Ci0LjQvyDQtNC+0LvQttC10L0g0LjQvNC10YLRjCDQt9C90LDRh9C10L3QuNC1IExhc3RDcmVhdGUv0J/QvtGB0LvQtdC00L3QuNC1INGB0L7Qt9C00LDQvdC90YvQtSDQuNC70LggTGFzdENoYW5nZS/Qn9C+0YHQu9C10LTQvdC40LUg0LjQt9C80LXQvdC10L3QvdGL0LUg0LjQu9C4IFRvcDEwLzEwINC70YPRh9GI0LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDRgdC+0LfQtNCw0YLRjCBSU1Mg0YTQsNC50LshJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtINCa0LvQuNC10L3RgiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g0JrQu9C40LXQvdGCIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDQntCx0YnQtdC00L7RgdGC0YPQv9C90YvQuSAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ9Cd0YPQttC90LAg0L7RhtC10L3QutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn0K3RgtCwINGB0YLQsNGC0YzRjyDQv9GD0YHRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQndC+0LLRi9C1INGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCDRgdGC0LDRgtC10LkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ9Ci0LjQvyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfRgdC70YPQttC10LHQvdC+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQvtGC0LrRgNGL0YLQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn0KTQuNC70YzRgtGAINC00LvRjyBIVE1MINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdGB0YvQu9C60Lgg0L/QvtC30LDQtNC4INC30LDQtNCw0L3QvdC+0Lkg0YHRgtGA0L7QutC4LiDQrdC70LXQvNC10L3RgiBJbWFnZSDQvNC+0LbQtdGCINCx0YvRgtGMINCy0LLQtdC00LXQvSDQtNCy0YPQvNGPINGB0L/QvtGB0L7QsdCw0LzQuC4g0J/QtdGA0LLRi9C5IC0g0Y3RgtC+INC40LzRjyDRhNCw0LnQu9CwKNGCLtC1LiBmYXEucG5nKS4g0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GD0YLRjCDQuiDRhNCw0LnQu9Cw0Lwg0LjQt9C+0LHRgNCw0LbQtdC90LjQuSBPVFJTLiDQktGC0L7RgNC+0Lkg0LLQsNGA0LjQsNC90YIg0LIg0YPQutCw0LfQsNC90LjQuCDRgdGB0YvQu9C60Lgg0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1KNC90LDQv9GA0LjQvNC10YAsIGh0dHA6Ly9vdHJzLm9yZy9mYXEucG5nKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAn0JTQvtCx0LDQstC40YLRjCDRgdGC0LDRgtGM0Y4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLdGG0LLQtdGCINC00LvRjyDRgNC10LfRg9C70YzRgtCw0YLQsCDQs9C+0LvQvtGB0L7QstCw0L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAn0JLRgNC10LzRjyDQtNC70Y8g0LLRi9GF0L7QtNCwINC40Lcg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyBGQVEg0L/Rg9C90LrRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQutCw0YLQtdCz0L7RgNC40Y/QvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICfQn9C10YfQsNGC0Ywg0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRINC00LvRjyDQutC70LjQtdC90YLQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn0JTQtdGB0Y/RgtC40YfQvdGL0YUg0LfQvdCw0LrQvtCyINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ9Cd0LDQt9Cy0LDQvdC40LUg0LrQsNGC0LXQs9C+0YDQuNC4INC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn0K/Qt9GL0Log0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRjiDQsiDQvtC00L3QvtGP0LfRi9GH0L3QvtC8INGA0LXQttC40LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCDQt9Cw0LPQvtC70L7QstC60L7Qsiwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC/0L7QutCw0LfRi9Cy0LDQtdC80YvRhSDQsiDRgdGC0LDRgtGM0Y/RhSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC+0YDQuNGC0LXRgiDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9Cw0L/QuNGB0LggRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQotC40L8g0LfQsNGP0LLQvtC6INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0LXQuSBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICfQl9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC/0LDRgNCw0LzQtdGC0YDQsCBBY3Rpb24g0LTQu9GPINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtCz0L4g0YTRgNC+0L3RgtC10L3QtNCwLiDQn9Cw0YDQsNC80LXRgtGAIEFjdGlvbiDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LIg0YHQutGA0LjQv9GC0LDRhSDRgdC40YHRgtC10LzRiy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LrQvtCz0LTQsCDQutC90L7Qv9C60LAg0L3QsNGB0YLRgNC+0LnQutC4INC00L7RgdGC0YPQv9C90LAg0LIg0YHQstGP0LfQsNC90L3QvtC8INCy0LjQtNC20LXRgtC1IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfRgtC+INGN0YLQuCDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LTQvtC70LbQvdGLINC40LzQtdGC0Ywg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3Ri9C1IEpTINC40LvQuCBDU1Mg0YTQsNC50LvRizogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiwg0LTQvtC70LbQtdC9INC70Lgg0LfQsNCz0L7Qu9C+0LLQvtC6IEZBUSDQvtCx0YrQtdC00LjQvdGP0YLRjNGB0Y8g0YEg0YLQtdC80L7QuSDRgdGC0LDRgtGM0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiwg0LrQsNC60LjQtSDQutC+0LvQvtC90LrQuCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0LIg0YHQstGP0LfQsNC90L3QvtC8IEZBUSDQstC40LTQttC10YLQtSAoKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JLQvdC40LzQsNC90LjQtTrRgtC+0LvRjNC60L4g0LDRgtGA0LjQsdGD0YLRiyBGQVEg0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10LkgKER5bmFtaWNGaWVsZF9OYW1lWCkg0YDQsNC30YDQtdGI0LXQvdGLINC00LvRjyBEZWZhdWx0Q29sdW1ucy/QmtC+0LvQvtC90LrQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRji4g0JLQvtC30LzQvtC20L3Ri9C1INC30L3QsNGH0LXQvdC40Y86IDAgPSDQntGC0LrQu9GO0YfQtdC90L4sIDEgPSDQlNCwLCAyID0g0JLQutC70Y7Rh9C10L3QviDQv9C+INGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80L7QtNGD0LvRjCDQv9GA0L7RgdC80L7RgtGA0LAg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LbRg9GA0L3QsNC70LAgRkFRINCyIHNtYWxsINGE0L7RgNC80LDRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGB0L/QuNGB0LrQsCDRgdGC0LDRgtC10LkgRkFRINCyIHNtYWxsINGE0L7RgNC80LDRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCBGQVEg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCBGQVEg0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LDRgtGA0LjQsdGD0YLQsCDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQuNC90YLQtdGA0YTQtdC50YHQsCDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIgRkFRIEV4cGxvcmVyZSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCAg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUgRkFRIEV4cGxvcmVyINC40L3RgtC10YDRhNC10LnRgdCwINC60LvQuNC10L3RgtCwLiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSBGQVEgRXhwbG9yZXIg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuIFVwOiDQv9C+0LfQtNC90LXQtSDQvdCw0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0L7QtSDQvdCw0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4gVXA6INGB0YLQsNGA0YvQtSDQstCy0LXRgNGF0YMuIERvd246INC90L7QstGL0LUg0LLQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuIFVwOiDRgdGC0LDRgNGL0LUg0LLQstC10YDRhdGDLiBEb3duOiDQvdC+0LLRi9C1INCy0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INGB0L7RgNGC0LjRgNC+0LLQutC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQvtCx0YnQtdC8L9C/0YPQsdC70LjRh9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4gVXA6INGB0YLQsNGA0YvQtSDQstCy0LXRgNGF0YMuIERvd246INC90L7QstGL0LUg0LLQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQsNGC0YDQuNCx0YPRgiBGQVEg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC/0L7QutCw0LfQsCDQvdCwINGN0LrRgNCw0L3QtSDQv9C+0LjRgdC60L7QstC+0LPQviDQt9Cw0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L/QtdGA0LXRh9C10L3RjCDQuNC90YTQvtGA0LzQsNGG0LjQuCDQstC60LvRjtGH0LDQtdC80L7QuSDQsiDQt9Cw0Y/QstC60YMg0LjQtyBGQVEuICJGdWxsIEZBUSIg0LLQutC70Y7Rh9Cw0LXRgiDRgtC60LXRgdGCLCDQstC70L7QttC10L3QuNGPINC4INCy0YHRgtGA0L7QtdC90L3Ri9C1INC40LfQvtCx0YDQsNC20LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LIg0JTQsNC50LTQttC10YHRgtC1LiAiTGltaXQiINC30LDQtNCw0LXRgiDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+INGD0LzQvtC70YfQsNC90LjRji4gIkdyb3VwIiDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LTQvtGB0YLRg9C/0LAg0Log0LTQsNC90L3Ri9C8INC80L7QtNGD0LvRjyAo0L3QsNC/0YDQuNC80LXRgCwgR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiINC+0LfQvdCw0YfQsNC10YIsINGH0YLQviDQvNC+0LTRg9C70Ywg0LvQuNCx0L4g0LLQutC70Y7Rh9C10L0g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC70LjQsdC+INCw0LPQtdC90YIsINC/0YDQuCDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCwg0LzQvtC20LXRgiDQtdCz0L4g0LLQutC70Y7Rh9C40YLRjCDQstGA0YPRh9C90YPRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0LrQvtC70L7QvdC+0LosINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQsiDQntCx0LfQvtGA0LUgRkFRLiDQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC90LUg0LLQu9C40Y/QtdGCINC90LAg0L/QvtGA0Y/QtNC+0Log0LrQvtC70L7QvdC+0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0LrQvtC70L7QvdC+0LosINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQsiDQmNGB0YLQvtGA0LjQuCBGQVEuINCt0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0L3QtSDQstC70LjRj9C10YIg0L3QsCDQv9C+0YDRj9C00L7QuiDQutC+0LvQvtC90L7Qui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C10YDQtdGH0LXQvdGMINC60L7Qu9C+0L3QvtC6LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0LIgRkFRLiDQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC90LUg0LLQu9C40Y/QtdGCINC90LAg0L/QvtGA0Y/QtNC+0Log0LrQvtC70L7QvdC+0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINCz0LTQtSDQsdGD0LTQtdGCINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDRgdGB0YvQu9C60LAgItCS0YHRgtCw0LLQuNGC0Ywg0LjQtyBGQVEiL1wnSW5zZXJ0IEZBUVwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ9Ce0L/RgNC10LTQtdC70LXQvdC40LUg0YHQstC+0LHQvtC00L3Ri9GFINC/0L7Qu9C10Lkg0Y3Qu9C10LzQtdC90YLQvtCyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC/0L7QutCw0LfQsCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQvdCwINGN0LrRgNCw0L3QtSDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdGC0LDRgtGM0Lgg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0JLQvtC30LzQvtC20L3Ri9C1INC30L3QsNGH0LXQvdC40Y86IDAgPSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCAxID0g0L/QvtC60LDQt9GL0LLQsNGC0YwsIDIgPSDQv9C+0LrQsNC30YvQstCw0YLRjCDQuCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LfQsNC/0L7Qu9C90LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC60LDQt9CwINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC90LAg0Y3QutGA0LDQvdC1INGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOiAwID0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMSA9INC/0L7QutCw0LfRi9Cy0LDRgtGMLCAyID0g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0Lgg0LTQvtC70LbQvdC+INCx0YvRgtGMINC30LDQv9C+0LvQvdC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LrQsNC30LAg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0L3QsCDRjdC60YDQsNC90LUg0L7QsdC30L7RgNCwINGB0YLQsNGC0LXQuSDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOiAwID0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMSA9INC/0L7QutCw0LfRi9Cy0LDRgtGMLCAyID0g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0Lgg0LTQvtC70LbQvdC+INCx0YvRgtGMINC30LDQv9C+0LvQvdC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC60LDQt9CwINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC90LAg0Y3QutGA0LDQvdC1INC+0LHQt9C+0YDQsCDRgdGC0LDRgtC10Lkg0LIgRkFRINCyINC/0YPQsdC70LjRh9C90L7QvC/QvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4g0JLQvtC30LzQvtC20L3Ri9C1INC30L3QsNGH0LXQvdC40Y86IDAgPSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCAxID0g0L/QvtC60LDQt9GL0LLQsNGC0YwsIDIgPSDQv9C+0LrQsNC30YvQstCw0YLRjCDQuCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LfQsNC/0L7Qu9C90LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LrQsNC30LAg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0L3QsCDRjdC60YDQsNC90LUg0L/QtdGH0LDRgtC4INGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC60LDQt9CwINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC90LAg0Y3QutGA0LDQvdC1INC/0LXRh9Cw0YLQuCDRgdGC0LDRgtGM0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC/0L7QutCw0LfQsCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQvdCwINGN0LrRgNCw0L3QtSDQv9C10YfQsNGC0Lgg0YHRgtCw0YLRjNC4IEZBUSDQsiDQv9GD0LHQu9C40YfQvdC+0Lwv0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOiAwID0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMSA9INC/0L7QutCw0LfRi9Cy0LDRgtGMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC/0L7QutCw0LfQsCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQvdCwINGN0LrRgNCw0L3QtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMiA9INC/0L7QutCw0LfRi9Cy0LDRgtGMINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC/0L7QutCw0LfQsCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQvdCwINGN0LrRgNCw0L3QtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOiAwID0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMSA9INC/0L7QutCw0LfRi9Cy0LDRgtGMLCAyID0g0L/QvtC60LDQt9GL0LLQsNGC0Ywg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC/0L7QutCw0LfQsCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQvdCwINGN0LrRgNCw0L3QtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0L/Rg9Cx0LvQuNGH0L3QvtC8L9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMiA9INC/0L7QutCw0LfRi9Cy0LDRgtGMINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC60LDQt9CwINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC90LAg0Y3QutGA0LDQvdC1INC+0LHQt9C+0YDQsCBGQVEg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LrQsNC30LAg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0L3QsCDRjdC60YDQsNC90LUg0L/RgNC+0YHQvNC+0YLRgNCwINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LrQsNC30LAg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0L3QsCDRjdC60YDQsNC90LUg0L/RgNC+0YHQvNC+0YLRgNCwINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuINCS0L7Qt9C80L7QttC90YvQtSDQt9C90LDRh9C10L3QuNGPOiAwID0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCwgMSA9INC/0L7QutCw0LfRi9Cy0LDRgtGMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LrQsNC30LAg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0L3QsCDRjdC60YDQsNC90LUg0L/RgNC+0YHQvNC+0YLRgNCwINGB0YLQsNGC0YzQuCBGQVEg0LIg0L/Rg9Cx0LvQuNGH0L3QvtC8L9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzogMCA9INC90LUg0L/QvtC60LDQt9GL0LLQsNGC0YwsIDEgPSDQv9C+0LrQsNC30YvQstCw0YLRjC7Qv9GD0LHQu9C40YfQvdC+0Lwv0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LwgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfQmNC30LzQtdC90LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC80L3QvtCz0L7Rj9C30YvRh9C90L7RgdGC0Ywg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0L7QuNGB0LrQsCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40YUg0LrQvtC90YLQtdC60YHRgtGDINGB0YLQsNGC0LXQuSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINGE0YPQvdC60YbQuNGOINC+0YbQtdC90LrQuCDQsiDQvNC+0LTRg9C70LUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Ce0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVgg0L7RgtCy0LXRgtGH0LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYINC+0YLQstC10YLRh9C40Log0LTQu9GPIFJpY2h0ZXh0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ9Ce0LHQu9Cw0YHRgtGMIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfQntCx0LvQsNGB0YLRjCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0JbRg9GA0L3QsNC70LAgRkFRINCyICJTbWFsbCIg0YTQvtGA0LzQsNGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INCe0LHQt9C+0YDQsCBGQVEg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAn0J/QtdGH0LDRgtGMINGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INCW0YPRgNC90LDQu9CwIEZBUSDQsiAiU21hbGwiINGE0L7RgNC80LDRgtC1INC90LAg0YHRgtGA0LDQvdC40YbRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQltGD0YDQvdCw0LvQsCBGQVEg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9CS0LrQu9GO0YfQuNGC0Ywg0Lgg0L3QsNGB0YLRgNC+0LjRgtGMINC80L7QtNGD0LvRjCDQv9C+0LjRgdC60LAgRkFRINC00LvRjyDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ9Cf0L7Qu9C1NCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICfQn9C+0LvQtTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICfQn9C+0LvQvdGL0LkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9CT0YDRg9C/0L/QsCDQtNC70Y8g0L7QtNC+0LHRgNC10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfQmNGB0YLQvtGA0LjRjyDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn0JLQutC70Y7Rh9C40YLRjCDQstC90YPRgtGA0LXQvdC90LjQtSDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfQktC60LvRjtGH0LjRgtGMINC40LzRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfQmNC90YLQtdGA0YTQtdC50YHRiywg0LIg0LrQvtGC0L7RgNGL0YUg0L/QsNC90LXQu9GMINCx0YvRgdGC0YDQvtCz0L4g0L/QvtC40YHQutCwINC80L7QttC10YIg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ9Cb0LjQvNC40YIgINC00LvRjyDQv9C+0LjRgdC60LAg0LTQu9GPINC/0L7RgdGC0YDQvtC10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtC10LrRgdGC0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ9Cf0YDQuNCy0Y/Qt9Cw0YLRjCDQtNGA0YPQs9C+0Lkg0L7QsdGK0LXQutGCINC6INGN0YLQvtC80YMg0Y3Qu9C10LzQtdC90YLRgyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0L7Rh9C10YDQtdC00LXQuSDQtNC70Y8g0LrQvtGC0L7RgNGL0YUg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9C+0LjRgdC60LAg0LrQvtC90YLQtdC60YHRgtC90YvRhSDRgdGC0LDRgtC10LkgRkFRINCy0LrQu9GO0YfQtdC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ch0L/QuNGB0L7QuiDRgtC40L/QvtCyINGB0L7RgdGC0L7Rj9C90LjQuSwg0LrQvtGC0L7RgNGL0LUg0LzQvtCz0YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQv9C40YHQvtC6INGC0LjQv9C+0LIg0YHQvtGB0YLQvtGP0L3QuNC5LCDQutC+0YLQvtGA0YvQtSDQvNC+0LPRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0YLQuNC/0L7QsiDRgdC+0YHRgtC+0Y/QvdC40LksINC60L7RgtC+0YDRi9C1INC80L7Qs9GD0YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM0YHRjyDQsiDQv9GD0LHQu9C40YfQvdC+0Lwv0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDQttGD0YDQvdCw0LvQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCDQt9Cw0LPQvtC70L7QstC60L7QsiDQsiDRgdGC0LDRgtGM0LUgRkFRINC/0L7QutCw0LfRi9Cy0LDQtdC80YvRhSDQsiDQvtCx0LfQvtGA0LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9C+0LvQvtCy0LrQvtCyINCyINGB0YLQsNGC0YzQtSBGQVEg0L/QvtC60LDQt9GL0LLQsNC10LzRi9GFINCyINC+0LHQt9C+0YDQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QsdC30L7RgNC1IEZBUSDQsiDQv9GD0LHQu9C40YfQvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0LbRg9GA0L3QsNC70LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfQndC+0LLQsNGPINGB0YLQsNGC0YzRjyDQsiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn0J3QvtCy0LDRjyDRgdGC0LDRgtGM0Y8gRkFRINC/0LXRgNC10LQg0L/Rg9Cx0LvQuNC60LDRhtC40LXQuSDRgtGA0LXQsdGD0LXRgiDQvtC00L7QsdGA0LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyIEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzRi9GFINCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIgINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0L7Qt9C40YbQuNC5INCyINC/0L7RgdC70LXQtNC90LjRhSDQuNC30LzQtdC90LXQvdC40Y/RhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0L3QvtCy0YvRhSDRgdGC0LDRgtGM0Y/RhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0YTRg9C90LrRhtC40LggVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAn0JLRi9GF0L7QtNC90L7QuSDRhNC40LvRjNGC0YAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPIEphdmEtc2NyaXB0INC00LvRjyDRjdC60YDQsNC90LAgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICfQm9C40LzQuNGCINC00LvRjyDQstGL0LLQvtC00LAg0YHQstGP0LfQsNC90L3Ri9GFL9C60L7QvdGC0LXQutGB0YLQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgdGC0YDQsNC90LjRhtGLICjQvdCwINC60L7RgtC+0YDQvtC5INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDRjdC70LXQvNC10L3RgtGLIEZBUSkg0L/RgNC4INC+0LHQt9C+0YDQtSDQttGD0YDQvdCw0LvQsCBGQVEg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsgKNC90LAg0LrQvtGC0L7RgNC+0Lkg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGN0LvQtdC80LXQvdGC0YsgRkFRKSDQv9GA0Lgg0L7QsdC30L7RgNC1IEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfQn9C10YfQsNGC0Ywg0Y3RgtC+0LPQviBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICfQn9C10YfQsNGC0Ywg0L/Rg9Cx0LvQuNGH0L3QvtC5INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICfQn9GA0L7RgdC80L7RgtGAINC/0YPQsdC70LjRh9C90L7QuSDRgdGC0LDRgtGM0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICfQn9C+0LjRgdC6INGB0YLQsNGC0YzQuCDQsiDQv9GD0LHQu9C40YfQvdC+0LwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ9Ce0LHRidC10LTQvtGB0YLRg9C/0L3Ri9C5L9C/0YPQsdC70LjRh9C90YvQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Ce0YfQtdGA0LXQtNGMINC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAn0J7RhtC10L3QutC4INC00LvRjyDQs9C+0LvQvtGB0L7QstCw0L3QuNGPLiDQmtC70Y7RhyDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0LfQsNC00LDQvSDQsiDQv9GA0L7RhtC10L3RgtCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfQn9C+0LjRgdC6INCyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQstGL0YHQvtGC0YMgKNCyINC/0LjQutGB0LXQu9Cw0YUpINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyBpbmxpbmUgSFRNTCDQv9C+0LvQtdC5INCyIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDICjQsiDQv9C40LrRgdC10LvQsNGFKSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8gaW5saW5lIEhUTUwg0L/QvtC70LXQuSDQsiBDdXN0b21lckZBUVpvb20gKNC4IFB1YmxpY0ZBUVpvb20pLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90YPRjiDQstGL0YHQvtGC0YMgKNCyINC/0LjQutGB0LXQu9Cw0YUpINC00LvRjyBpbmxpbmUgSFRNTCDQv9C+0LvQtdC5INCyIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQsNC60YHQuNC80LDQu9GM0L3Rg9GOINCy0YvRgdC+0YLRgyAo0LIg0L/QuNC60YHQtdC70LDRhSkg0LTQu9GPIGlubGluZSBIVE1MINC/0L7Qu9C10Lkg0LIgQ3VzdG9tZXJGQVFab29tICjQuCBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LDRgtGMINC60L3QvtC/0LrRgyAiSW5zZXJ0IEZBUSBMaW5rL9CS0LrQu9GO0YfQuNGC0Ywg0YHRgdGL0LvQutGDINC90LAgRkFRIiDQsiBBZ2VudEZBUVpvb21TbWFsbCDQtNC70Y8g0L/Rg9Cx0LvQuNGH0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQsNGC0Ywg0LrQvdC+0L/QutGDICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIi8i0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSDQuCDRgdCy0Y/Qt9Cw0YLRjCIv0JLRgdGC0LDQstC40YLRjCDQv9C+0LvQvdGL0LkgRkFRINC4INGB0LLRj9C30LDRgtGMIiDQsiBBZ2VudEZBUVpvb21TbWFsbCDQtNC70Y8g0L/Rg9Cx0LvQuNGH0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0YLRjCDQutC90L7Qv9C60YMgItCS0YHRgtCw0LLQuNGC0Ywg0YLQtdC60YHRgiBGQVEhIC8gItCS0YHRgtCw0LLQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSDQv9C+0LvQvdC+0YHRgtGM0Y4iINC90LAg0Y3QutGA0LDQvdC1IEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINCyIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0YPRgtGMIEZBUSDQtNCwL9C90LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvdC10LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YvQtSDRgdGC0LDRgtGM0Lgg0LIg0L7QsdC30L7RgNC1IEZBUSBFeHBsb3JlciDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSDQv9C+0LTRgNCw0LfQtNC10LvQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQv9C+0YHQu9C10LTQvdC40LUg0LjQt9C80LXQvdC10L3QuNGPINCyINGD0LrQsNC30LDQvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC90L7QstGL0LUg0L/Rg9C90LrRgtGLINCyINGD0LrQsNC30LDQvdC90YvRhSDQuNC90YLQtdGA0YTQtdC50YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0YLRjCAi0LfQstGR0LfQtNGLIiDQtNC70Y8g0YHRgtCw0YLQtdC5LCDRgNC10LnRgtC40L3QsyDQutC+0YLQvtGA0YvRhSDRgNCw0LLQtdC9INC40LvQuCDQsdC+0LvRjNGI0LUg0LfQsNC00LDQvdC90L7Qs9C+INC30LTQtdGB0YwgKNGD0YHRgtCw0L3QvtCy0LjRgtC1INCyICIwIiDQtNC70Y8g0L7RgtC60LvRjtGH0LXQvdC40Y8g0L/QvtC60LDQt9CwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMIFRvcCAxMCDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC+0YbQtdC90LrRgyDQsiDRg9C60LDQt9Cw0L3QvdGL0YUg0LjQvdGC0LXRgNGE0LXQudGB0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGB0LLRj9C30LDRgtGMINGB0YLQsNGC0YzRjiBGQVEg0YEg0LTRgNGD0LPQuNC8INC+0LHRitC10LrRgtC+0Lwg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YPQtNCw0LvQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INGN0YLQvtC5INGB0YLQsNGC0YzQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQtNC+0YHRgtGD0L8g0Log0LjRgdGC0L7RgNC40Lgg0YHRgtCw0YLRjNC4IEZBUSDQv9GA0Lgg0LXQtSDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINC/0YDQuCDQtdC1INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INCy0LXRgNC90YPRgtGM0YHRjyDQvdCw0LfQsNC0INC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQn9C10YfQsNGC0Ywg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDRgdGC0LDRgtGM0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfQoNC10YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAn0KHQuNC80L/RgtC+0LzRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICfQotC+0LvRjNC60L4g0YLQtdC60YHRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICfQr9C30YvQutC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQuNGB0LrQvtC80YvRhSDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCBGQVEsINC90LDQv9GA0LjQvNC10YAsIEZBUSMsIEtCIywgTXlGQVEjLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiAtIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0LfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQstGP0LfQsNGC0Ywg0L7QsdGK0LXQutGCIFwnRkFRXCcg0YEg0LTRgNGD0LPQuNC8INC/0L7QtNC+0LHQvdGL0Lwg0L7QsdGK0LXQutGC0L7QvCDQuNGB0L/QvtC70YzQt9GD0Y8g0YLQuNC/INGB0LLRj9C30LggXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC30LDQtNCw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0LLRj9C30LDRgtGMINC+0LHRitC10LrRgiBcJ0ZBUVwnINGBINC00YDRg9Cz0LjQvCDQv9C+0LTQvtCx0L3Ri9C8INC+0LHRitC10LrRgtC+0Lwg0LjRgdC/0L7Qu9GM0LfRg9GPINGC0LjQvyDRgdCy0Y/Qt9C4IFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQt9Cw0LTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdCy0Y/Qt9Cw0YLRjCDQvtCx0YrQtdC60YIgXCdGQVFcJyDRgSDQtNGA0YPQs9C40LzQuCDQvtCx0YrQtdC60YLQsNC80Lgg0YLQuNC/0LAgItCX0LDRj9Cy0LrQsCIg0LjRgdC/0L7Qu9GM0LfRg9GPINGC0LjQvyDRgdCy0Y/Qt9C4IFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQt9Cw0LTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdCy0Y/Qt9Cw0YLRjCDQvtCx0YrQtdC60YIgXCdGQVFcJyDRgSDQtNGA0YPQs9C40LzQuCDQvtCx0YrQtdC60YLQsNC80Lgg0YLQuNC/0LAgItCX0LDRj9Cy0LrQsCIg0LjRgdC/0L7Qu9GM0LfRg9GPINGC0LjQvyDRgdCy0Y/Qt9C4IFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Ci0LXQu9C+INC30LDRj9Cy0LrQuCDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtGM0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0KLQtdC80LAg0LfQsNGP0LLQutC4INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfQntC/0LjRgdCw0L3QuNC1INGP0YDQu9GL0LrQsCjQuNC60L7QvdC60LgpINC00LvRjyDQvdCw0LLQuNCz0LDRhtC40L7QvdC90L7QuSDQv9Cw0L3QtdC70LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICfQvtGC0LrRgNGL0YLQvtC1ICjQutC70LjQtdC90YLQsNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn0YHQu9GD0LbQtdCx0L3QvtC1ICjQsNCz0LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAn0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKNC/0YPQsdC70LjRh9C90YvQuSknOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ9CU0L7QtNCw0Zgg0KfQn9CfINGH0LvQsNC90LDQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ9Ca0ZnRg9GH0L3QtSDRgNC10YfQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRmNCwINGY0LUg0L7QsdCw0LLQtdC30L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXRmtC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDQp9Cf0J8g0LrQsNGC0LXQs9C+0YDQuNGY0LDQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QtNCw0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn0J7QsdGA0LjRiNC4INC60LDRgtC10LPQvtGA0LjRmNGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn0KMg0YDQtdC00YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn0JTQvtC00LDRmCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn0KPRgNC10LTQuCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNCwINC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQuNC30LDQsdC10YDQtdGC0LUg0LHQsNGAINGY0LXQtNC90YMg0LPRgNGD0L/RgyDQtNC+0LfQstC+0LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0LUg0L7Qv9C10YDQsNGC0LXRgNCwINC60L7RmNC1INC80L7Qs9GDINC/0YDQuNGB0YLRg9C/0LjRgtC4INGH0LvQsNC90YbQuNC80LAg0YMg0L7QstC+0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfQkdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90L4g0LrQsNC+INC60L7QvNC10L3RgtCw0YAg0YMg0JjRgdGC0YDQsNC20LjQstCw0YfRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9CU0LAg0LvQuCDRgdGC0LLQsNGA0L3QviDQttC10LvQuNGC0LUg0LTQsCDQvtCx0YDQuNGI0LXRgtC1INC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfQndC1INC80L7QttC10YLQtSDQvtCx0YDQuNGB0LDRgtC4INC+0LLQsNGDINC60LDRgtC10LPQvtGA0LjRmNGDLiDQo9C/0L7RgtGA0LXQsdGZ0LXQvdCwINGY0LUg0YMg0LHQsNGAINGY0LXQtNC90L7QvCDQp9Cf0J8g0YfQu9Cw0L3QutGDINC4L9C40LvQuCDRmNC1INC90LDQtNGA0LXRktC10L3QsCDQvdCw0ZjQvNCw0ZrQtSDRmNC10LTQvdC+0Zgg0LTRgNGD0LPQvtGYINC60LDRgtC10LPQvtGA0LjRmNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn0J7QstCwINC60LDRgtC10LPQvtGA0LjRmNCwINGY0LUg0YPQv9C+0YLRgNC10LHRmdC10L3QsCDRgyDRgdC70LXQtNC10ZvQuNC8INCn0J/QnyDRh9C70LDQvdGG0LjQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ9Ce0LLQsCDQutCw0YLQtdCz0L7RgNC40ZjQsCDRmNC1INC90LDQtNGA0LXRktC10L3QsCDRgdC70LXQtNC10ZvQuNC8INC/0L7QtNC60LDRgtC10LPQvtGA0LjRmNCw0LzQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfQlNCwINC70Lgg0YHRgtCy0LDRgNC90L4g0LbQtdC70LjRgtC1INC00LAg0L7QsdGA0LjRiNC10YLQtSDQvtCy0LDRmCDQp9Cf0J8g0YfQu9Cw0L3QsNC6Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfQp9Cf0J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ9Cn0J/QnyDQmNGB0YLRgNCw0LbQuNCy0LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfQkdGA0LfQviDRgtGA0LDQttC10ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn0I/QvtC60LXRgNGB0LrQuCDQt9C90LDRhtC4INGB0YMg0LTQvtC30LLQvtGZ0LXQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQndCw0L/RgNC10LTQvdCwINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Cn0J/QnyDRh9C70LDQvdGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTQutCw0YLQtdCz0L7RgNC40ZjQtSDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LUuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfQmNGB0YLQvtGA0LjRmNCwINC+0LQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn0J3QuNGB0YMg0L/RgNC+0L3QsNGS0LXQvdC4INC/0L7QtNCw0YbQuCDQp9Cf0J8g0LTQvdC10LLQvdC40LrQsC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INCn0J/QnyDRmNC10LfQuNGG0LjQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ9Cj0L/QvtGC0YDQtdCx0LjRgtC1INC+0LLRgyDRhNGD0L3QutGG0LjRmNGDINCw0LrQviDQttC10LvQuNGC0LUg0LTQsCDQutC+0YDQuNGB0YLQuNGC0LUg0LLQuNGI0LUg0ZjQtdC30LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfQlNC+0LTQsNGYINGY0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAn0J7QsdGA0LjRiNC4INGY0LXQt9C40LogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn0JTQvtC00LDRmCDQiNC10LfQuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfQo9GA0LXQtNC4INCI0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLQsNGYINGY0LXQt9C40Lo/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ9Cd0LUg0LzQvtC20LXRgtC1INC+0LHRgNC40YHQsNGC0Lgg0L7QstCw0Zgg0ZjQtdC30LjQui4g0KPQv9C+0YLRgNC10LHRmdC10L0g0ZjQtSDRgyDQsdCw0YAg0ZjQtdC00L3QvtC8INCn0J/QnyDRh9C70LDQvdC60YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAn0J7QstCw0Zgg0ZjQtdC30LjQuiDRmNC1INGD0L/QvtGC0YDQtdCx0ZnQtdC9INGDINGB0LvQtdC00LXRm9C40Lwg0KfQn9CfINGH0LvQsNC90YbQuNC80LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9C+0LTQtdGI0LDQstCw0ZrQtSDQutC+0L3RgtC10LrRgdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn0KfQn9CfINGH0LvQsNC90LDQutCwINC/0L4g0YHRgtGA0LDQvdC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCDQp9Cf0J8g0L/QvtC00LDRhtC4Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICfQmtGZ0YPRh9C90LAg0YDQtdGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICfQk9C70LDRgdCw0ZggKNC90L/RgCDRmNC10LTQvdCw0LrQviAxMCDQuNC70Lgg0LLQtdGb0LUg0L7QtCA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn0J7RhtC10L3QuCAo0L3Qv9GAINGY0LXQtNC90LDQutC+IDI1JSDQuNC70Lgg0LLQtdGb0LUg0L7QtCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn0J7QtNC+0LHRgNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9C+0YHQu9C10LTRmtC4INGY0LUg0LzQtdGa0LDQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCDQp9Cf0J8g0YfQu9Cw0L3QutCwICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwINCn0J/QnyDRh9C70LDQvdC60LAgKNC40LfQvNC10ZLRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNC1INC/0YDQvtC80LXQvdC1INCn0J/QnyDRh9C70LDQvdC60LAgKNC/0YDQtS/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNC1INC/0YDQvtC80LXQvdC1INCn0J/QnyDRh9C70LDQvdC60LAgKNC40LfQvNC10ZLRgyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAn0KfQn9CfINC60L7QvNC/0LvQtdGC0LDQvSDRgtC10LrRgdGCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn0KfQn9CfINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfQmNC30LHQvtGAINC/0YDQvtGE0LjQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQk9C70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQs9C70LDRgdCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdC4INCz0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ9C90L/RgCDRmNC10LTQvdCw0LrQviAxMCDQuNC70Lgg0LLQtdGb0LUg0L7QtCA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn0J7RhtC10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQvtGG0LXRmtC40LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdCwINC+0YbQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfQvdC/0YAg0ZjQtdC00L3QsNC60L4gMjUlINC40LvQuCDQstC10ZvQtSDQvtC0IDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCDQp9Cf0J8g0YfQu9Cw0L3QutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSDQp9Cf0J8g0YfQu9Cw0L3QutCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ9Cn0J/QnyDQuNC90YTQvtGA0LzQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ9Ce0YbQtdGa0LjQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ9C+0LQgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEg0JHRg9C00LjRgtC1INC/0YDQstC4INC60L7RmNC4INGb0LUg0L7RhtC10L3QuNGC0Lgg0L7QstCw0Zgg0KfQn9CfINGH0LvQsNC90LDQuiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ9Cf0YDQtdGD0LfQvNC4INC/0YDQuNC70L7Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ9CU0LAg0LHQuNGB0YLQtSDQvtGC0LLQvtGA0LjQu9C4INCy0LXQt9C1INGDINGB0LvQtdC00LXRm9C40Lwg0LHQu9C+0LrQvtCy0LjQvNCwINC+0L/QuNGB0LAsINC80L7QttC00LAg0ZvQtdGC0LUg0YLRgNC10LHQsNGC0Lgg0LTQsCDQv9GA0LjRgtC40YHQvdC10YLQtSDigJ5DdHJs4oCdINC40LvQuCDigJ5DbWTigJ0g0LjQu9C4IOKAnlNoaWZ04oCdINGC0LDRgdGC0LXRgCDQtNC+0Log0LjRgdGC0L7QstGA0LXQvNC10L3QviDQutC70LjQutC90LXRgtC1INC90LAg0LLQtdC30YMgKNC30LDQstC40YHQuCDQvtC0INCy0LDRiNC10LMg0J7QoSDQuCDQv9GA0LXQs9C70LXQtNCw0YfQsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn0JrQvtC70LjQutC+INGY0LUg0LrQvtGA0LjRgdGC0LDQvSDQvtCy0LDRmCDRh9C70LDQvdCw0Lo/INCc0L7Qu9C40LzQviDQstCw0YEg0LTQsCDQtNCw0YLQtSDQstCw0YjRgyDQvtGG0LXQvdGDINC4INC/0L7QvNC+0LPQvdC10YLQtSDQv9C+0LTQuNC30LDRmtGDINC60LLQsNC70LjRgtCw0YLQsCDQsdCw0LfQtSDRh9C10YHRgtC+INC/0L7RgdGC0LDQstGZ0LDQvdC40YUg0L/QuNGC0LDRmtCwLiDQpdCy0LDQu9CwINCS0LDQvCEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn0L3QuNGY0LUg0LrQvtGA0LjRgdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0LLRgNC70L4g0LrQvtGA0LjRgdC90L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ9CU0L7QtNCw0Zgg0KfQn9CfINGH0LvQsNC90LrRgyDQvdCw0YHQu9C+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0KPQvdC10YHQuCDQp9Cf0J8g0YLQtdC60YHRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfQo9C90LXRgdC4INC60L7QvNC/0LvQtdGC0LDQvSDQp9Cf0J8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn0KPQvdC10YHQuCDQp9Cf0J8g0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ9Cj0L3QtdGB0Lgg0KfQn9CfINGC0LXQutGB0YIg0Lgg0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ9Cj0L3QtdGB0Lgg0LrQvtC80L/Qu9C10YLQsNC9INCn0J/QnyDQuCDQstC10LfRgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCDQp9Cf0J8g0YfQu9Cw0L3RhtC4Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJ9Ce0LLQviDQvNC+0LbQtSDQtNCwINCx0YPQtNC1INC+0LQg0L/QvtC80L7Rm9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfQmtC+0YDQuNGB0L3QuCDRgNC10YHRg9GA0YHQuCDQt9CwINGD0L3QtdGC0Lgg0L/RgNC10LTQvNC10YIg0Lgg0YLQtdC60YHRgiDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQl9CwINC70LjRgdGC0YMg0LrQvtGA0LjRgdC90LjRhSDRgNC10YHRg9GA0YHQsCwg0LzQvtC70LjQvNC+INGD0L3QtdGB0LjRgtC1INC/0YDQtdC00LzQtdGCINC40LvQuCDRgtC10LrRgdGCLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtGC0L/Rg9C90LAg0YLQtdC60YHRgtGD0LDQu9C90LAg0L/RgNC10YLRgNCw0LPQsCDRgyDQp9Cf0J8g0YfQu9Cw0L3RhtC40LzQsCAo0L3Qv9GALiAiSm9obipuIiDQuNC70LggIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQsCDQs9C70LDRgdCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn0KHQsNC80L4g0KfQn9CfINGH0LvQsNC90YbQuCDRgdCwINCz0LvQsNGB0L7QstC40LzQsC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtCwINC+0YbQtdGa0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfQodCw0LzQviDQp9Cf0J8g0YfQu9Cw0L3RhtC4INGB0LAg0L7RhtC10L3QvtC8Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfQodCw0LzQviDQp9Cf0J8g0YfQu9Cw0L3RhtC4INC60YDQtdC40YDQsNC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQsNC80L4g0KfQn9CfINGH0LvQsNC90YbQuCDQutGA0LXQuNGA0LDQvdC4INC40LfQvNC10ZLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICfQn9GA0L7RhNC40Lsg0L/RgNC10YLRgNCw0LPQtSDQutCw0L4g0YjQsNCx0LvQvtC9Pyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ9CR0YDQvtGYINGH0LvQsNC90LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Ci0YDQsNC20Lgg0YfQu9Cw0L3QutC1INGB0LAg0LrRmdGD0YfQvdC+0Lwg0YDQtdGH0LgnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0IjQsNCy0L3Qvic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0J3QsNC30LDQtCDQvdCwINCn0J/QnyDQmNGB0YLRgNCw0LbQuNCy0LDRhyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAn0J/QvtGC0YDQtdCx0L3QsCDQstCw0Lwg0ZjQtSDigJ5yd+KAnSDQtNC+0LfQstC+0LvQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRmNC1INGDINC60L7RmNC+0Zgg0LrQvtGA0LjRgdC90LjQuiDQuNC80LAg0L/RgNC40YHRgtGD0L8g0LHQtdC3INC+0LPRgNCw0L3QuNGH0LXRmtCwINC90LjRgdGDINC/0YDQvtC90LDRktC10L3QtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAn0J3QuNGY0LUg0L/RgNC+0L3QsNGS0LXQvSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRmNC10LfQuNC6INC4INC90LUg0LzQvtC20LUg0YHQtSDQutGA0LXQuNGA0LDRgtC4INC90L7Qsi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICfQn9C+0YLRgNC10LHQsNC9INCY0JQg0JrQsNGC0LXQs9C+0YDQuNGY0LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRmNCwINGC0YDQtdCx0LAg0LTQsCDQuNC80LAg0LjQvNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn0J7QstCwINC60LDRgtC10LPQvtGA0LjRmNCwINCy0LXRmyDQv9C+0YHRgtC+0ZjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ce0LLQsCDQutCw0YLQtdCz0L7RgNC40ZjQsCDQstC10Zsg0L/QvtGB0YLQvtGY0LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0JrQsNGC0LXQs9C+0YDQuNGY0LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ9Cd0LjRmNC1INCx0LjQu9C+INC80L7Qs9GD0ZvQtSDQvtCx0YDQuNGB0LDRgtC4INC60LDRgtC10LPQvtGA0LjRmNGDICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQp9Cf0J8g0LrQsNGC0LXQs9C+0YDQuNGY0LAg0LDQttGD0YDQuNGA0LDQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn0KfQn9CfINC60LDRgtC10LPQvtGA0LjRmNCwINC00L7QtNCw0YLQsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ9Cd0LXQvNCw0YLQtSDQtNC+0LfQstC+0LvRgyDQt9CwINC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0Lgg0KfQn9CfINGH0LvQsNC90LDQuiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAn0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSAlcyDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINGY0LXRgCDQvdC40ZjQtSDQtNCw0YIg0JjQlCDQodGC0LDQstC60LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAn0KfQn9CfINC40YHRgtC+0YDQuNGY0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfQp9Cf0J8g0LTQvdC10LLQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAn0J/QvtGC0YDQtdCx0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINC+0L/RhtC40ZjQsCBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINC+0L/RhtC40ZjQsCBGQVE6OkZyb250ZW5kOjpPdmVydmlldyDQvNC+0YDQsCDQtNCwINCx0YPQtNC1IEhBU0gg0YDQtdGE0LXRgNC10L3RhtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ9Cd0LjRmNC1INC/0YDQvtC90LDRktC10L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCDQt9CwINC/0YDQtdCz0LvQtdC0ICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQmNCUINCI0LXQt9C40LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn0JjQvNC1INGY0LUg0L7QsdCw0LLQtdC30L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQntCy0LDRmCDRmNC10LfQuNC6INCy0LXRmyDQv9C+0YHRgtC+0ZjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0Lgg0ZjQtdC30LjQuiAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn0JDQttGD0YDQuNGA0LDQvSDQp9Cf0J8g0ZjQtdC30LjQuiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ9CU0L7QtNCw0YIg0KfQn9CfINGY0LXQt9C40LohJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ9Cf0L7RgdC70LXQtNGa0LUg0LDQttGD0YDQuNGA0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ9Cn0J/QnyDQtNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAn0IjQtdC30LjRh9C60Lgg0L7QsdGY0LXQutGCINGB0LUg0L3QtSDQvNC+0LbQtSDRg9GH0LjRgtCw0YLQuCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdC80LAg0YDQtdC30YPQu9GC0LDRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0KfQn9CfINCx0YDQvtGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNGa0Lgg0ZjQtSDQvNC10ZrQsNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwINCn0J/QnyDRgdGC0LDQstC60LUgKNC/0YDQtS/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNC1INC60YDQtdC40YDQsNGa0LAg0KfQn9CfINGB0YLQsNCy0LrQtSAo0LjQt9C80LXRktGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80LUg0LjQt9C80LXQvdC1INCn0J/QnyDRgdGC0LDQstC60LUgKNC/0YDQtS/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNC1INC40LfQvNC10L3QtSDQp9Cf0J8g0YHRgtCw0LLQutC1ICjQuNC30LzQtdGS0YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ9CI0LXQtNC90LDQutC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ9CS0LXRm9C1INC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ9CI0LXQtNC90LDQutC+INC40LvQuCDQstC10ZvQtSDQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ9Cc0LDRmtC1INC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ9CI0LXQtNC90LDQutC+INC40LvQuCDQvNCw0ZrQtSDQvtC0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ9Cf0L7RgtGA0LXQsdCw0L0g0JjQlCDQn9C+0ZnQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn0KXQstCw0LvQsCDQvdCwINCy0LDRiNC10Lwg0LPQu9Cw0YHRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfQktC10Zsg0YHRgtC1INCz0LvQsNGB0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Cd0LjRmNC1INC40LfQsNCx0YDQsNC90LAg0L3QuCDRmNC10LTQvdCwINC+0YbQtdC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ9Cc0LXRhdCw0L3QuNC30LDQvCDQt9CwINCz0LvQsNGB0LDRmtC1INC90LjRmNC1INCw0LrRgtC40LLQuNGA0LDQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfQntGG0LXRmtC40LLQsNGa0LUg0LPQu9Cw0YHQsNGa0LAg0L3QuNGY0LUg0LTQtdGE0LjQvdC40YHQsNC90L4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ9Co0YLQsNC80L/QsCDQp9Cf0J8g0YfQu9Cw0L3QutCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn0JrRgNC10LjRgNCw0L0g0LjQt9C80LXRktGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ9Cf0L7RgtGA0LXQsdCw0L0g0JjQlCDQodGC0LDQstC60LUhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfQp9Cf0J8g0YfQu9Cw0L3RhtC4ICjQvdC+0LLQuCDQutGA0LXQuNGA0LDQvdC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0KfQn9CfINGH0LvQsNC90YbQuCAo0L3QtdC00LDQstC90L4g0LzQtdGa0LDQvdC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfQp9Cf0J8g0YfQu9Cw0L3RhtC4ICjQv9GA0LLQuNGFIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQotC40L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ1R5cGUg0LzQvtGA0LAg0LHQuNGC0LggTGFzdENyZWF0ZSwgTGFzdENoYW5nZSDQuNC70LggVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnUlNTINC00LDRgtC+0YLQtdC60LAg0L3QtSDQvNC+0ZvQtSDQsdC40YLQuCDRgdC90LjQvNGZ0LXQvdCwISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAo0KfQn9CfINC60L7QvNC/0LvQtdGC0LDQvSDRgtC10LrRgdGCKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g0JrQu9C40ZjQtdC90YIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtINCa0LvQuNGY0LXQvdGCICjQp9Cf0J8g0LrQvtC80L/Qu9C10YLQsNC9INGC0LXQutGB0YIpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtINCI0LDQstC90L4gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDQiNCw0LLQvdC+ICjQp9Cf0J8g0LrQvtC80L/Qu9C10YLQsNC9INGC0LXQutGB0YIpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ9Cd0LXQvtC/0YXQvtC00L3QsCDQvtGG0LXQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn0KfQu9Cw0L3QsNC6INGY0LUg0L/RgNCw0LfQsNC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQn9C+0YHQu9C10LTRmtC1INC60YDQtdC40YDQsNC90Lgg0KfQn9CfINGH0LvQsNC90YbQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQn9C+0YHQu9C10LTRmtC1INCw0LbRg9GA0LjRgNCw0L3QuCDQp9Cf0J8g0YfQu9Cw0L3RhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfQn9GA0LLQuNGFIDEwINCn0J/QnyDRh9C70LDQvdCw0LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn0LjQvdGC0LXRgNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQtdC60YHRgtC10YDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9GY0LDQstC90L4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICfQpNC40LvRgtC10YAg0LfQsCDigJ5IVE1M4oCdINC40LfQu9Cw0Lcg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCy0LXQt9C1INC40LfQsCDQtNC10YTQuNC90LjRgdCw0L3QvtCzINC90LjQt9CwINC30L3QsNC60L7QstCwLiDQldC70LXQvNC10L3RgiDQodC70LjQutCwINC00L7Qt9Cy0L7RmdCw0LLQsCDQtNCy0LAg0L3QsNGH0LjQvdCwINGD0L3QvtGB0LAuINCf0YDQstC4INGY0LUg0L3QsNC30LjQsiDRgdC70LjQutC1ICjQvdC/0YAgZmFxLnBuZykuINGDINC+0LLQvtC8INGB0LvRg9GH0LDRmNGDINCx0LjRm9C1INC60L7RgNC40YjRm9C10L3QsCDigJ5PVFJT4oCdINC/0YPRgtCw0ZrQsCDQtNC+INGB0LvQuNC60LUuICDQlNGA0YPQs9CwINC80L7Qs9GD0ZvQvdC+0YHRgiDRmNC1INGD0L3QvtGBINCy0LXQt9C1INC00L4g0YHQu9C40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAn0JTQvtC00LDRmCDQp9Cf0J8g0YfQu9Cw0L3QsNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBnZW5lcmljIGFnZW50IHRvIGV4ZWN1dGUgY3VzdG9tIGNvbW1hbmQgbGluZSBzY3JpcHRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBnZW5lcmljIGFnZW50IHRvIGV4ZWN1dGUgY3VzdG9tIG1vZHVsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn4oCeQ1NT4oCdINCx0L7RmNCwINC30LAg0YDQtdC30YPQu9GC0LDRgiDQs9C70LDRgdCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ9CS0YDQtdC80LUg0L7RgdC70L7QsdCw0ZLQsNGa0LAg0LrQtdGI0LAg0LfQsCDQp9Cf0J8g0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INC60LDRgtC10LPQvtGA0LjRmNCw0LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn0KjRgtCw0LzQv9Cw0ZrQtSDQutC70LjRmNC10L3RgtGB0LrQuNGFINCn0J/Qny4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAn0JTQtdGC0LDRmdC4INC60LvQuNGY0LXQvdGC0YHQutC40YUg0KfQn9CfLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ9Cf0YDQtdGC0YDQsNCz0LAg0LrQu9C40ZjQtdC90YLRgdC60LjRhSDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICfQmtC70LjRmNC10L3RgtGB0LrQsCDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJ0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfQkdGA0L7RmCDQtNC10YbQuNC80LDQu9CwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQs9C70LDRgdCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ9Cd0LDQt9C40LIg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQsNGC0LXQs9C+0YDQuNGY0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRmNC10LfQuNC6INCn0J/QnyDRh9C70LDQvdCw0LrQsCDRgyDRmNC10LTQvdC+0ZjQtdC30LjRh9C60L7QvCDQvdCw0YfQuNC90YMg0YDQsNC00LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdCwINC80LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDQp9Cf0J8g0YfQu9Cw0L3QutCwINC60L7RmNCwINGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQvtGA0LjRgtC10YIg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0YHRgtCw0ZrQtSDQp9Cf0J8g0YPQvdC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGB0YLQsNGa0LUg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgtC40L8g0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90LAg0LLRgNC10LTQvdC+0YHRgiDQt9CwIOKAnkFjdGlvbuKAnSDQv9Cw0YDQsNC80LXRgtCw0YAg0YMg0ZjQsNCy0L3QvtC8INGE0YDQvtC90YLQtdC90LTRgy4g0J7QstCw0Zgg0L/QsNGA0LDQvNC10YLQsNGAINC60L7RgNC40YHRgtC1INGB0LrRgNC40L/RgtC1INGB0LjRgdGC0LXQvNCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0JDQutGG0LjRmNC1INCz0LTQtSDRmNC1INC00YPQs9C80LUg0L/QvtGB0YLQsNCy0LrQuCDQtNC+0YHRgtGD0L/QvdC+INGDINC/0L7QstC10LfQsNC90L7QvCDQs9GA0LDRhNC40YfQutC+0Lwg0LXQu9C10LzQtdC90YLRgyDQvtCx0ZjQtdC60YLQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvQuNC80L4g0LTQsCDQuNC80LDRgtC1INC90LAg0YPQvNGDINC00LAg0L7QstC1INCQ0LrRhtC40ZjQtSDQvNC+0YDQsNGY0YMg0LTQsCDQsdGD0LTRgyDRgNC10LPQuNGB0YLRgNC+0LLQsNC90LUg0YMg0YHQu9C10LTQtdGb0LjQvCBKUyDQuCBDU1Mg0LTQsNGC0L7RgtC10LrQsNC80LA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDQvdCw0YHQu9C+0LIg0KfQn9CfINGC0YDQtdCx0LAg0LTQsCDQsdGD0LTQtSDQtNC+0LTQsNGCINC90LAg0YLQtdC80YMg0YfQu9Cw0L3QutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INC60L7Qu9C+0L3QtSDRgdGDINC/0YDQuNC60LDQt9Cw0L3QtSDRgyDQv9C+0LLQtdC30LDQvdC+0Lwg0KfQn9CfINCz0YDQsNGE0LjRh9C60L7QvCDQtdC70LXQvNC10L3RgtGDIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCd0LDQv9C+0LzQtdC90LA6INCh0LDQvNC+INCn0J/QnyDQsNGC0YDQuNCx0YPRgtC4INC4INCU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCAoRHluYW1pY0ZpZWxkX05hbWVYKSDRgdGDINC00L7Qt9Cy0L7RmdC10L3QuCDQt9CwINC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtS4g0JzQvtCz0YPRm9C1INC/0L7RgdGC0LDQstC60LU6IDAgPSDQvtC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0LTQvtGB0YLRg9C/0L3QviwgMiA9INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INCw0LrRgtC40LLQuNGA0LDQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQp9Cf0J8g0LTQvdC10LLQvdC40LrQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LzQvtC00YPQuyDQv9GA0LXQs9C70LXQtNCwINC30LAg0LzQsNC70Lgg0L/RgNC40LrQsNC3INCn0J/QnyDQu9C40YHRgtC1LiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0KfQn9CfINGDINC/0YDQtdGC0YDQsNC30Lgg0KfQn9CfICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDQp9Cf0J8g0YMg0L/RgNC10YLRgNCw0LfQuCDQp9Cf0J8gINGDINC40L3RgtC10YDRhNC10ZjRgdGDICDQutC+0YDQuNGB0L3QuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDQp9Cf0J8g0YMg0L/RgNC10YLRgNCw0LfQuCDQp9Cf0J8gINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1INCn0J/QnyDRgyDQp9Cf0J8g0LjRgdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDQp9Cf0J8g0YMg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1INCn0J/QnyDRgyDQp9Cf0J8g0LjRgdGC0YDQsNC20LjQstCw0YfRgyDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INCn0J/QnyDRgyDRgNC10LfRg9C70YLQsNGC0LjQvNCwINCn0J/QnyDQuNGB0YLRgNCw0LbQuNCy0LDRh9CwICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0YDQtdGA0LDRgtC10YDQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0KfQn9CfINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0KfQn9CfINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0LAg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0KfQn9CfINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0YDQtdGA0LDRgtC10YDQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INCn0J/QnyDRgyDRgNC10LfRg9C70YLQsNGC0LjQvNCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INCn0J/QnyDRgyDRgNC10LfRg9C70YLQsNGC0LjQvNCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40LrQsNC30LDQvdC4INCn0J/QnyDQsNGC0YDQuNCx0YPRgiDQv9GA0LXRgtGA0LDQs9C1INC30LAg0KfQn9CfINC/0YDQvtC30L7RgCDQt9CwINC/0YDQtdGC0YDQsNCz0YMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUg0LrQvtGY0LUg0ZvQtSDQsdC40YLQuCDRg9Cx0LDRh9C10L3QtSDRgyDQp9Cf0J8g0LHQsNC30LjRgNCw0L3QuCDRgtC40LrQtdGCLiDigJ7QmtC+0LzQv9C70LXRgtCw0L0g0KfQn9Cf4oCdINGD0LrRmdGD0YfRg9GY0LUg0YLQtdC60YHRgiwg0L/RgNC40LvQvtCz0LUg0Lgg0YPQvNC10YLQvdGD0YLQtSDRgdC70LjQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7Qt9Cw0LTQuNC90YHQutC1INC/0LDRgNCw0LzQtdGC0YDQtSDQt9CwINC60L7QvdGC0YDQvtC70L3RgyDRgtCw0LHQu9GDLiAi0JvQuNC80LjRgiIg0LTQtdGE0LjQvdC40YjQtSDQsdGA0L7RmCDQv9C+0LTRgNC10LfRg9C80LXQstCw0L3QviDQv9GA0LjQutCw0LfQsNC90LjRhSDRg9C90L7RgdCwLiAi0JPRgNGD0L/QsCIg0YHQtSDQutC+0YDQuNGB0YLQuCDQtNCwINC+0LPRgNCw0L3QuNGH0Lgg0L/RgNC40YHRgtGD0L8g0LTQvtC00LDRgtC60YMgKNC90L/RgC4g0JPRgNGD0L/QsDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiLQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviIg0YPQutCw0LfRg9GY0LUg0L3QsCDRgtC+INC00LAg0LvQuCDRmNC1INC00L7QtNCw0YLQsNC6INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INCw0LrRgtC40LLQuNGA0LDQvSDQuNC70Lgg0LTQsCDRmNC1INC/0L7RgtGA0LXQsdC90L4g0LTQsCDQs9CwINC60L7RgNC40YHQvdC40Log0LzQsNC90YPQtdC70L3QviDQsNC60YLQuNCy0LjRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0YMg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0YMuINCe0LLQsCDQvtC/0YbQuNGY0LUg0L3QtdC80LAg0YPRgtC40YbQsNGYINC90LAg0L/QvtC30LjRhtC40ZjQtSDQutC+0LvQvtC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INGDINCn0J/QnyDQtNC90LXQstC90LjQutGDLiDQntCy0LAg0L7Qv9GG0LjRmNC1INC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INGDINCn0J/QnyDQv9GA0LXRgtGA0LDQt9C4LiDQntCy0LAg0L7Qv9GG0LjRmNC1INC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ9CU0LXRhNC40L3QuNGI0LUg0LPQtNC1INGb0LUg4oCe0YPQsdCw0YbQuCDQp9Cf0J/igJ0g0LLQtdC30LAg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICfQlNC10YTQuNC90LjRhtC40ZjQsCDQv9C+0ZnQsCDRgdC70L7QsdC+0LTQvdC+0LMg0YLQtdC60YHRgtCwINC30LAg0KfQn9CfINGB0YLQsNCy0LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn0J7QsdGA0LjRiNC4INC+0LLQviDQp9Cf0J8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINC90LAg0LXQutGA0LDQvdGDINC00L7QtNCw0LLQsNGa0LAg0KfQn9CfINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0JzQvtCz0YPRm9CwINC/0L7QtNC10YjQsNCy0LDRmtCwOiAwID0g0J7QvdC10LzQvtCz0YPRm9C10L3QviwgMSA9INCe0LzQvtCz0YPRm9C10L3QviwgMiA9INCe0LzQvtCz0YPRm9C10L3QviDQuCDQvdC10L7Qv9GF0L7QtNC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0L3QsCDQtdC60YDQsNC90YMg0LjQt9C80LXQvdC1INCn0J/QnyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuINCc0L7Qs9GD0ZvQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsDogMCA9INCe0L3QtdC80L7Qs9GD0ZvQtdC90L4sIDEgPSDQntC80L7Qs9GD0ZvQtdC90L4sIDIgPSDQntC80L7Qs9GD0ZvQtdC90L4g0Lgg0L3QtdC+0L/RhdC+0LTQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDQvdCwINC10LrRgNCw0L3RgyDQv9GA0LXQs9C70LXQtNCwINCn0J/QnyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC+0YDQuNGB0L3QuNC60LAuINCc0L7Qs9GD0ZvQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsDogMCA9INCe0L3QtdC80L7Qs9GD0ZvQtdC90L4sIDEgPSDQntC80L7Qs9GD0ZvQtdC90L4sIDIgPSDQntC80L7Qs9GD0ZvQtdC90L4g0Lgg0L3QtdC+0L/RhdC+0LTQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0L3QsCDQtdC60YDQsNC90YMg0L/RgNC10LPQu9C10LTQsCDQp9Cf0J8g0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLiDQnNC+0LPRg9Gb0LAg0L/QvtC00LXRiNCw0LLQsNGa0LA6IDAgPSDQntC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0J7QvNC+0LPRg9Gb0LXQvdC+LCAyID0g0J7QvNC+0LPRg9Gb0LXQvdC+INC4INC90LXQvtC/0YXQvtC00L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINC90LAg0LXQutGA0LDQvdGDINC30LAg0YjRgtCw0LzQv9GDINCn0J/QnyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuINCc0L7Qs9GD0ZvQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsDogMCA9INCe0L3QtdC80L7Qs9GD0ZvQtdC90L4sIDEgPSDQntC80L7Qs9GD0ZvQtdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDQvdCwINC10LrRgNCw0L3RgyDQt9CwINGI0YLQsNC80L/RgyDQp9Cf0J8g0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQnNC+0LPRg9Gb0LAg0L/QvtC00LXRiNCw0LLQsNGa0LA6IDAgPSDQntC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0J7QvNC+0LPRg9Gb0LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINC90LAg0LXQutGA0LDQvdGDINC30LAg0YjRgtCw0LzQv9GDINCn0J/QnyDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuINCc0L7Qs9GD0ZvQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsDogMCA9INCe0L3QtdC80L7Qs9GD0ZvQtdC90L4sIDEgPSDQntC80L7Qs9GD0ZvQtdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINC90LAg0LXQutGA0LDQvdGDINC/0YDQtdGC0YDQsNCz0LUg0KfQn9CfINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0JzQvtCz0YPRm9CwINC/0L7QtNC10YjQsNCy0LDRmtCwOiAwID0g0J7QvdC10LzQvtCz0YPRm9C10L3QviwgMSA9INCe0LzQvtCz0YPRm9C10L3QviwgMiA9INCe0LzQvtCz0YPRm9C10L3QviDQuCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRgdC1INC/0YDQuNC60LDQt9GD0ZjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0L3QsCDQtdC60YDQsNC90YMg0L/RgNC10YLRgNCw0LPQtSDQp9Cf0J8g0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQnNC+0LPRg9Gb0LAg0L/QvtC00LXRiNCw0LLQsNGa0LA6IDAgPSDQntC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0J7QvNC+0LPRg9Gb0LXQvdC+LCAyID0g0J7QvNC+0LPRg9Gb0LXQvdC+INC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGB0LUg0L/RgNC40LrQsNC30YPRmNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0L3QsCDQtdC60YDQsNC90YMg0L/RgNC10YLRgNCw0LPQtSDQp9Cf0J8g0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLiDQnNC+0LPRg9Gb0LAg0L/QvtC00LXRiNCw0LLQsNGa0LA6IDAgPSDQntC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0J7QvNC+0LPRg9Gb0LXQvdC+LCAyID0g0J7QvNC+0LPRg9Gb0LXQvdC+INC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGB0LUg0L/RgNC40LrQsNC30YPRmNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINC90LAg0LXQutGA0LDQvdGDINC/0YDQtdCz0LvQtdC00LAg0KfQn9CfINC80LDQu9C+0LMg0YTQvtGA0LzQsNGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLiDQnNC+0LPRg9Gb0LAg0L/QvtC00LXRiNCw0LLQsNGa0LA6IDAgPSDQntC90LXQvNC+0LPRg9Gb0LXQvdC+LCAxID0g0J7QvNC+0LPRg9Gb0LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDQvdCwINC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQtdCz0LvQtdC00LAg0KfQn9CfINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0JzQvtCz0YPRm9CwINC/0L7QtNC10YjQsNCy0LDRmtCwOiAwID0g0J7QvdC10LzQvtCz0YPRm9C10L3QviwgMSA9INCe0LzQvtCz0YPRm9C10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0L3QsCDQtdC60YDQsNC90YMg0LTQtdGC0LDRmdC90L7QsyDQv9GA0LXQs9C70LXQtNCwINCn0J/QnyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC+0YDQuNGB0L3QuNC60LAuINCc0L7Qs9GD0ZvQsCDQv9C+0LTQtdGI0LDQstCw0ZrQsDogMCA9INCe0L3QtdC80L7Qs9GD0ZvQtdC90L4sIDEgPSDQntC80L7Qs9GD0ZvQtdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDQvdCwINC10LrRgNCw0L3RgyDQtNC10YLQsNGZ0L3QvtCzINC/0YDQtdCz0LvQtdC00LAg0KfQn9CfINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4g0JzQvtCz0YPRm9CwINC/0L7QtNC10YjQsNCy0LDRmtCwOiAwID0g0J7QvdC10LzQvtCz0YPRm9C10L3QviwgMSA9INCe0LzQvtCz0YPRm9C10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ9Cj0YDQtdC00Lgg0L7QstC+INCn0J/Qnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn0JDQutGC0LjQstC40YDQsNGa0LUg0LLQuNGI0LUg0ZjQtdC30LjQutCwINC90LAg0KfQn9CfINC80L7QtNGD0LvRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRhNGD0L3QutGG0LjRmNGDINC/0L7QstC10LfQsNC90L7QsyDRh9C70LDQvdC60LAg0LfQsCDQuNC90YLQtdGA0YTQtdGY0YEg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCw0ZrQtSDQvNC10YXQsNC90LjQt9C80LAg0LfQsCDQs9C70LDRgdCw0ZrQtSDQvdCwINCn0J/QnyDQvNC+0LTRg9C70YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn0JjRgdGC0YDQsNC20LjQstCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAn0KfQn9CfIOKAnkFKQVjigJ0g0L7QtNCz0L7QstCw0YDQsNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAn0KfQn9CfIOKAnkFKQVjigJ0g0L7QtNCz0L7QstCw0YDQsNGHINC30LAg4oCeUmljaHRleHTigJ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAn0KfQn9CfINC/0YDQvtGB0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ9Cn0J/QnyDQv9GA0L7RgdGC0L7RgC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICfQntCx0YDQuNGI0Lgg0KfQn9CfLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICfQo9GA0LXQtNC4INCn0J/Qny4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC/0YDQtdCz0LvQtdC00LAg0KfQn9CfINC00L3QtdCy0L3QuNC60LAgLSAi0LzQsNC70L4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0L/RgNC10LPQu9C10LTQsCDQp9Cf0J8gLSAi0LzQsNC70L4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICfQqNGC0LDQvNC/0LDRmCDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INCx0YDQvtGY0LAg0KfQn9CfINC/0L4g0YHRgtGA0LDQvdC4INC30LAg0L/RgNC10LPQu9C10LQg0KfQn9CfINC00L3QtdCy0L3QuNC60LAgLSAi0LzQsNC70L4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQsdGA0L7RmNCwINCn0J/QnyDQv9C+INGB0YLRgNCw0L3QuCDQt9CwINC/0YDQtdCz0LvQtdC0INCn0J/QnyAtICLQvNCw0LvQviInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9Cn0J/Qn9C/0YDQtdGC0YDQsNCz0LAg0L/QvtC30LDQtNC40L3RgdC60L7QsyDRgNGD0YLQtdGA0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICfQn9C+0ZnQtTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAn0J/QvtGZ0LU1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnS9C+0LzQv9C70LXRgtCw0L0g0KfQn9CfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9CT0YDRg9C/0LAg0LfQsCDQvtC00L7QsdGA0LDQstCw0ZrQtSDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfQmNGB0YLQvtGA0LjRmNCw0YIg0L7QstC+0LMg0KfQn9CfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfQo9C60ZnRg9GH0Lgg0LjQvdGC0LXRgNC90LAg0L/QvtGZ0LAg0YMg0KfQn9CfINCx0LDQt9C40YDQsNC9INGC0LjQutC10YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn0KPQutGZ0YPRh9C4INC90LDQt9C40LIg0YHQstCw0LrQvtCzINC/0L7RmdCwINGDINCn0J/QnyDQsdCw0LfQuNGA0LDQvSDRgtC40LrQtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSDQvdCwINC60L7QvCDRgtGA0LXQsdCwINC/0YDQuNC60LDQt9Cw0YLQuCDQsdGA0LfRgyDQv9GA0LXRgtGA0LDQs9GDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JTQvdC10LLQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDRmNC10LfQuNGG0LjQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0L/RgNC10YLRgNCw0LPQtSDQt9CwINCz0LXQvdC10YDQuNGB0LDRmtC1INC70LjRgdGC0LUg0LrRmdGD0YfQvdC40YUg0YDQtdGH0Lgg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICfQn9C+0LLQtdC20Lgg0LTRgNGD0LPQuCDQvtCx0ZjQtdC60LDRgiDRgdCwINC+0LLQvtC8INGB0YLQsNCy0LrQvtC8INCn0J/Qnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0LjQvNC10L3QsCDRgNC10LTQvtCy0LAg0LfQsCDQutC+0ZjQtSDRmNC1INGE0YPQvdGG0LjRmNCwINC/0L7QstC10LfQsNC90L7QsyDRh9C70LDQvdC60LAg0LDQutGC0LjQstC40YDQsNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0YLQuNC/0L7QstCwINGB0YLQsNGa0LAg0LrQvtGY0Lgg0YHQtSDQvNC+0LPRgyDQutC+0YDQuNGB0YLQuNGC0Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQm9C40YHRgtCwINGC0LjQv9C+0LLQsCDRgdGC0LDRmtCwINC60L7RmNC4INGB0LUg0LzQvtCz0YMg0LrQvtGA0LjRgdGC0LjRgtC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60L7RgNC40YHQvdC40LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0YLQuNC/0L7QstCwINGB0YLQsNGa0LAg0LrQvtGY0Lgg0YHQtSDQvNC+0LPRgyDQutC+0YDQuNGB0YLQuNGC0Lgg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINCn0J/QnyDQuNGB0YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0Zgg0KfQn9CfINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyDQp9Cf0J8g0LjRgdGC0YDQsNC20LjQstCw0YfQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC+0YDQuNGB0L3QuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINCn0J/QnyDQuNGB0YLRgNCw0LbQuNCy0LDRh9CwINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYINCn0J/QnyDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDQp9Cf0J8g0LTQvdC10LLQvdC40LrRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0Zgg0KfQn9CfINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyDQp9Cf0J8g0YfQu9Cw0L3QsNC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyDQp9Cf0J8g0YfQu9Cw0L3QsNC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0KfQn9CfINC40YHRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LAg0LTRg9C20LjQvdCwINC90LDRgdC70L7QstCwINGDINCn0J/QnyDRh9C70LDQvdCw0LrRgyDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDQp9Cf0J8g0LjRgdGC0YDQsNC20LjQstCw0YfRgyDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyDQp9Cf0J8g0YfQu9Cw0L3QsNC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0KfQn9CfINC/0YDQtdGC0YDQsNC30Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMg0KfQn9CfINGH0LvQsNC90LDQutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINCn0J/QnyDQv9GA0LXRgtGA0LDQt9C4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMg0KfQn9CfINGH0LvQsNC90LDQutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINCn0J/QnyDQv9GA0LXRgtGA0LDQt9C4INGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyDQp9Cf0J8g0YfQu9Cw0L3QsNC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0KfQn9CfINC00L3QtdCy0L3QuNC60YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSDigJ5IVE1MIE9wZW5TZWFyY2jigJ0g0L/RgNC+0YTQuNC70LAg0LfQsCDQutGA0LDRgtC60YMg0KfQn9CfINC/0YDQtdGC0YDQsNCz0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGB0LDRmtC1IOKAnkhUTUwgT3BlblNlYXJjaOKAnSDQv9GA0L7RhNC40LvQsCDQt9CwINC60YDQsNGC0LrRgyDQp9Cf0J8g0L/RgNC10YLRgNCw0LPRgyDRgyDRmNCw0LLQvdC+0Lwg0L/RgNC+0YTQuNC70YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSDigJ5odG1sIE9wZW5TZWFyY2jigJ0g0L/RgNC+0YTQuNC70LAg0LfQsCDQutGA0LDRgtC60YMg0KfQn9CfINC/0YDQtdGC0YDQsNCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9Cd0L7QstC4INCn0J/QnyDRh9C70LDQvdCw0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn0J3QvtCy0Lgg0KfQn9CfINGH0LvQsNC90YbQuCDRgtGA0LXQsdCw0ZjRgyDQsdC40YLQuCDQvtC00L7QsdGA0LXQvdC4INC/0YDQtSDQvtCx0ZjQsNCy0ZnQuNCy0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCDQp9Cf0J8g0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0KfQn9CfINCY0YHRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINCn0J/QnyDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDQp9Cf0J8g0JjRgdGC0YDQsNC20LjQstCw0YfRgyDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINCn0J/QnyDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDQvdCwINGB0LLQsNC60L7RmCDRgdGC0YDQsNC90Lgg0YDQtdC30YPQu9GC0LDRgtCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINCn0J/QnyDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDQvdCwINGB0LLQsNC60L7RmCDRgdGC0YDQsNC90Lgg0YDQtdC30YPQu9GC0LDRgtCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ9CR0YDQvtGYINC/0YDQuNC60LDQt9Cw0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDQv9C+0YHQu9C10LTRmtC40Lwg0LjQt9C80LXQvdCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfQkdGA0L7RmCDQv9GA0LjQutCw0LfQsNC90LjRhSDRgdGC0LDQstC60Lgg0YMg0L/QvtGB0LvQtdC00ZrQtSDQutGA0LXQuNGA0LDQvdC40LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn0JHRgNC+0Zgg0L/RgNC40LrQsNC30LDQvdC40YUg0YHRgtCw0LLQutC4INGDICLQv9GA0LLQuNGFIDEwIiAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICfQmNC30LvQsNC30L3QuCDRhNC40LvRgtC10YAg0LfQsCDRg9Cx0LDRhtC40LLQsNGa0LUgSmF2YVNjcmlwdCDRgyBDdXN0b21lclRpY2tldE1lc3NhZ2Ug0LXQutGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LjQt9C70LDQt9CwINC30LAg0L/QvtCy0LXQt9Cw0L3QtSDQp9Cf0J8g0YfQu9Cw0L3QsNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDRgdGC0YDQsNC90LjRhtCwICjQvdCwINC60L7RmNC40LzQsCDRgdGDINCn0J/QnyDRgdGC0LDQstC60LUg0L/RgNC40LrQsNC30LDQvdC1KSDQvdCwINC80LDQu9C+0Lwg0L/RgNC40LrQsNC30YMg0L/RgNC10LPQu9C10LTQsCDQp9Cf0J8g0LTQvdC10LLQvdC40LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDRgdGC0YDQsNC90LjRhtCwICjQvdCwINC60L7RmNC40LzQsCDRgdGDINCy0LjQtNGZ0LjQstC1INCn0J/QnyDRgdGC0LDQstC60LUpINGB0LzQsNGa0LXQvdC+0LMg0L/RgNC10LPQu9C10LTQsCDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn0KjRgtCw0LzQv9Cw0Zgg0L7QstC+INCn0J/Qnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ9Co0YLQsNC80L/QsNGa0LUg0ZjQsNCy0L3QuNGFINCn0J/Qny4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ9CU0LXRgtCw0ZnQuCDRmNCw0LLQvdC40YUg0KfQn9CfLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICfQn9GA0LXRgtGA0LDQs9CwINGY0LDQstC90LjRhSDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn0IjQsNCy0L3QviDQp9Cf0J8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Cg0LXQtCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1INCn0J/QnyDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfQntGG0LXQvdC1INC30LAg0LPQu9Cw0YHQsNGa0LUuINCa0ZnRg9GHINC80L7RgNCwINCx0LjRgtC4INGDINC/0YDQvtGG0LXQvdGC0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAn0KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ9Cf0YDQtdGC0YDQsNC20Lgg0KfQn9CfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn0J/QvtC00LXRgdC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdGDINCy0LjRgdC40L3RgyAo0YMg0L/QuNC60YHQtdC70LjQvNCwKSDQuNC90LvQuNC90LUgSFRNTCDQv9C+0ZnQsCDRgyBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn0J/QvtC00LXRgdC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdGDINCy0LjRgdC40L3RgyAo0YMg0L/QuNC60YHQtdC70LjQvNCwKSDQuNC90LvQuNC90LUgSFRNTCDQv9C+0ZnQsCDRgyBDdXN0b21lckZBUVpvb20gKNC4IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfQn9C+0LTQtdGB0Lgg0LzQsNC60YHQuNC80LDQu9C90YMg0LLQuNGB0LjQvdGDICjRgyDQv9C40LrRgdC10LvQuNC80LApINC40L3Qu9C40L3QtSBIVE1MINC/0L7RmdCwINGDIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfQn9C+0LTQtdGB0Lgg0LzQsNC60YHQuNC80LDQu9C90YMg0LLQuNGB0LjQvdGDICjRgyDQv9C40LrRgdC10LvQuNC80LApINC40L3Qu9C40L3QtSBIVE1MINC/0L7RmdCwINGDIEN1c3RvbWVyRkFRWm9vbSAo0LggUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20LggItCj0LHQsNGG0Lgg0KfQn9CfINC70LjQvdC6IiDQtNGD0LPQvNC1INGDIEFnZW50RkFRWm9vbVNtYWxsINC30LAg0ZjQsNCy0L3QtSDQp9Cf0J8g0LDRgNGC0LjQutC70LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttC4ICLQo9Cx0LDRhtC4INCn0J/QnyDQotC10LrRgdGCINC4INCb0LjQvdC6IiAvICLQo9Cx0LDRhtC4INCm0LXQviDQp9Cf0J8g0Lgg0JvQuNC90LoiINC00YPQs9C80LUg0YMgQWdlbnRGQVFab29tU21hbGwg0LfQsCDRmNCw0LLQvdC1INCn0J/QnyDQsNGA0YLQuNC60LvQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttC4ICLQo9Cx0LDRhtC4INCn0J/QnyDRgtC10LrRgdGCIiAvICLQo9Cx0LDRhtC4INCm0LXQviDQp9Cf0J8iINC00YPQs9C80LUg0YMgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ9Cf0YDQuNC60LDQtyDQp9Cf0J8g0YfQu9Cw0L3QutCwINC60LDQviDigJ5IVE1M4oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfQn9GA0LjQutCw0LbQuCDQv9GD0YLQsNGa0YMg0LTQviDQp9Cf0J8g0LTQsC/QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQtyDQvdC10LjRgdC/0YDQstC90LjRhSDRgdGC0LDQstC60Lgg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCDQp9Cf0J8g0LjRgdGC0YDQsNC20LjQstCw0YfQsCDQvdCwINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn0J/RgNC40LrQsNC20Lgg0YHRgtCw0LLQutC1INGB0YPQsdC60LDRgtC10LPQvtGA0LjRmNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9GA0LjQutCw0LbQuCDQt9Cw0LTRmtC1INC/0YDQvtC80LXRmtC10L3QtSDRgdGC0LDQstC60LUg0YMg0LTQtdGE0LjQvdC40YHQsNC90LjQvCDQuNC90YLQtdGA0YTQtdGY0YHQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9GA0LjQutCw0LbQuCDQt9Cw0LTRmtC1INC60YDQtdC40YDQsNC90LUg0YHRgtCw0LLQutC1INGDINC00LXRhNC40L3QuNGB0LDQvdC40Lwg0LjQvdGC0LXRgNGE0LXRmNGB0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbQuCDQt9Cy0LXQt9C00LjRhtC1INC30LAg0YfQu9Cw0L3QutC1INGB0LAg0ZjQtdC00L3QsNC60L7QvCDQuNC70Lgg0LHQvtGZ0L7QvCDQvtGG0LXQvdC+0Lwg0L7QtCDQvtC00YDQtdGS0LXQvdC1INCy0YDQtdC00L3QvtGB0YLQuCAo0L/QvtGB0YLQsNCy0Lgg0LLRgNC10LTQvdC+0YHRgiAwINC30LAg0LTQtdCw0LrRgtC40LLQuNGA0LDRmtC1INC40LfQu9Cw0LfQsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9GA0LjQutCw0LbQuCDQv9GA0LLQuNGFIDEwINGB0YLQsNCy0LrQuCDRgyDQtNC10YTQuNC90LjRgdCw0L3QuNC8INC40L3RgtC10YDRhNC10ZjRgdC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0YDQuNC60LDQttC4INCz0LvQsNGB0LDRmtC1INGDINC00LXRhNC40L3QuNGB0LDQvdC40Lwg0LjQvdGC0LXRgNGE0LXRmNGB0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LrQvtGY0LAg0L7QvNC+0LPQuNGb0LDQstCwINC/0L7QstC10LfQuNCy0LDRmtC1INCn0J/QnyDRgdCwINC00YDRg9Cz0LjQvCDQvtCx0ZjQtdC60YLQvtC8INGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQvtCzINCn0J/QnyDRgyDQvtC/0LXRgNCw0YLQtdGA0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQutC+0ZjQsCDQvtC80L7Qs9C40ZvQsNCy0LAg0LHRgNC40YHQsNGa0LUg0KfQn9CfINGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0L7Qv9C10YDQsNGC0LXRgNGB0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9GA0LjRgdGC0YPQvyDQuNGB0YLQvtGA0LjRmNCw0YLRgyDQp9Cf0J8g0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQvtC/0LXRgNCw0YLQtdGA0YHQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDINCn0J/QnyDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC+0L/QtdGA0LDRgtC10YDRgdC60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INGDINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQp9Cf0J8g0YMg0L7Qv9C10YDQsNGC0LXRgNGB0LrQvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRiNGC0LDQvNC/0LDRmtC1INCn0J/QnyDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC+0L/QtdGA0LDRgtC10YDRgdC60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfQoNC10YjQtdGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ9Ch0LjQvNC/0YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ9Ch0LDQvNC+INGC0LXQutGB0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0ZjQtdC30LjRhtC4INC30LAg0L/QvtCy0LXQt9Cw0L3QtSDQp9Cf0J8g0YfQu9Cw0L3QsNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LAg0KfQn9CfLCDQvdC/0YAg0KfQn9CfIywg0JHQlyMsINCc0L7RmNCn0J/QnyMuINCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGY0LUg0KfQn9CfIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCDQp9Cf0J8g0L7QsdGY0LXQutGCINC80L7QttC1INC00LAg0YHQtSDQv9C+0LLQtdC20LUg0YHQsCDQtNGA0YPQs9C40Lwg0KfQn9CfINC+0LHRmNC10LrRgtC40LzQsCDQutC+0YDQuNGB0YLQtdGb0Lgg4oCe0L3QvtGA0LzQsNC70L3Rg+KAnSDQstC10LfRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfQntCy0L4g0L/QvtC00LXRiNCw0LLQsNGa0LUg0LTQtdGE0LjQvdC40YjQtSDQtNCwINCn0J/QnyDQvtCx0ZjQtdC60YIg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QstC10LbQtSDRgdCwINC00YDRg9Cz0LjQvCDQp9Cf0J8g0L7QsdGY0LXQutGC0LjQvNCwINC60L7RgNC40YHRgtC10ZvQuCDQstC10LfRgyDRgtC40L/QsCDigJ7RgNC+0LTQuNGC0LXRmS/Qv9C+0YLQvtC80LDQuuKAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCDQp9Cf0J8g0L7QsdGY0LXQutGCINC80L7QttC1INC00LAg0YHQtSDQv9C+0LLQtdC20LUg0YHQsCDQtNGA0YPQs9C40Lwg0YLQuNC60LXRgiDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4IOKAntC90L7RgNC80LDQu9C90YPigJ0g0LLQtdC30YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCDQp9Cf0J8g0L7QsdGY0LXQutGCINC80L7QttC1INC00LAg0YHQtSDQv9C+0LLQtdC20LUg0YHQsCDQtNGA0YPQs9C40Lwg0YLQuNC60LXRgiDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4INCy0LXQt9GDINGC0LjQv9CwIOKAntGA0L7QtNC40YLQtdGZL9C/0L7RgtC+0LzQsNC64oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0KHQsNC00YDQttCw0Zgg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn0J/RgNC10LTQvNC10YIg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUg0KfQn9CfINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAn0KHRgtCw0LLQutCwINCw0LvQsNGC0L3QtSDQu9C40L3QuNGY0LUg0LfQsCDRgdC60YDQsNGb0LXQvdC40YbRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ9C10LrRgdGC0LXRgNC90L4gKNC60LvQuNGY0LXQvdGCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn0LjQvdGC0LXRgNC90L4gKNC+0L/QtdGA0LDRgtC10YApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ9GY0LDQstC90L4gKNGY0LDQstC90L4pJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIMSMUFAgxI1sYW5hayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ0tsanXEjW5lIHJlxI1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmlqYSBqZSBvYmF2ZXpuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdPZG9icmVuamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUgxIxQUCBrYXRlZ29yaWphbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdPYnJpxaFpIGthdGVnb3JpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdVIHJlZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnVXJlZGkga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1BvZGthdGVnb3JpamEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdNb2xpbW8gZGEgaXphYmVyZXRlIGJhciBqZWRudSBncnVwdSBkb3p2b2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cGUgb3BlcmF0ZXJhIGtvamUgbW9ndSBwcmlzdHVwaXRpIMSNbGFuY2ltYSB1IG92b2oga2F0ZWdvcmlqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0JpxIdlIHByaWthemFubyBrYW8ga29tZW50YXIgdSBJc3RyYcW+aXZhxI11Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRGEgbGkgc3R2YXJubyDFvmVsaXRlIGRhIG9icmnFoWV0ZSBvdnUga2F0ZWdvcmlqdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOZSBtb8W+ZXRlIG9icmlzYXRpIG92YXUga2F0ZWdvcmlqdS4gVXBvdHJlYmxqZW5hIGplIHUgYmFyIGplZG5vbSDEjFBQIMSNbGFua3UgaS9pbGkgamUgbmFkcmXEkWVuYSBuYWptYW5qZSBqZWRub2ogZHJ1Z29qIGthdGVnb3JpamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdPdmEga2F0ZWdvcmlqYSBqZSB1cG90cmVibGplbmEgdSBzbGVkZcSHaW0gxIxQUCDEjWxhbmNpbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnT3ZhIGthdGVnb3JpamEgamUgbmFkcmXEkWVuYSBzbGVkZcSHaW0gcG9ka2F0ZWdvcmlqYW1hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0RhIGxpIHN0dmFybm8gxb5lbGl0ZSBkYSBvYnJpxaFldGUgb3ZhaiDEjFBQIMSNbGFuYWs/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ8SMUFAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ8SMUFAgSXN0cmHFvml2YcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0Jyem8gdHJhxb5lbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdExb5va2Vyc2tpIHpuYWNpIHN1IGRvenZvbGplbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ05hcHJlZG5hIHByZXRyYWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdQb2RrYXRlZ29yaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ8SMUFAgxI1sYW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1BvZGthdGVnb3JpamUgbmlzdSBwcm9uYcSRZW5lLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSXN0b3JpamEgb2QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTmlzdSBwcm9uYcSRZW5pIHBvZGFjaSDEjFBQIGRuZXZuaWthLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSDEjFBQIGplemljaW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1Vwb3RyZWJpdGUgb3Z1IGZ1bmtjaWp1IGFrbyDFvmVsaXRlIGRhIGtvcmlzdGl0ZSB2acWhZSBqZXppa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0RvZGFqIGplemlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ09icmnFoWkgamV6aWsgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnRG9kYWogSmV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1VyZWRpIEplemlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdEYSBsaSB6YWlzdGEgxb5lbGl0ZSBkYSBpemJyacWhZXRlIG92YWogamV6aWs/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ05lIG1vxb5ldGUgb2JyaXNhdGkgb3ZhaiBqZXppay4gVXBvdHJlYmxqZW4gamUgdSBiYXIgamVkbm9tIMSMUFAgxI1sYW5rdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdPdmFqIGplemlrIGplIHVwb3RyZWJsamVuIHUgc2xlZGXEh2ltIMSMUFAgxI1sYW5jaW1hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUG9kZcWhYXZhbmplIGtvbnRla3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfEjFBQIMSNbGFuYWthIHBvIHN0cmFuaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgxIxQUCBwb2RhY2kuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0tsanXEjW5hIHJlxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ0dsYXNhaiAobnByIGplZG5ha28gMTAgaWxpIHZlxIdlIG9kIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdPY2VuaSAobnByIGplZG5ha28gMjUlIGlsaSB2ZcSHZSBvZCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnT2RvYnJlbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnUG9zbGVkbmppIGplIG1lbmphbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSDEjFBQIMSNbGFua2EgKHByZS9wb3NsZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnVnJlbWUga3JlaXJhbmphIMSMUFAgxI1sYW5rYSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBwcm9tZW5lIMSMUFAgxI1sYW5rYSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBwcm9tZW5lIMSMUFAgxI1sYW5rYSAoaXptZcSRdSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnxIxQUCBrb21wbGV0YW4gdGVrc3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICfEjFBQIHByZXRyYWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnSXpib3IgcHJvZmlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnR2xhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTmVtYSBwb2RlxaFhdmFuamEgemEgZ2xhc2FuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVjaWZpxI1uaSBnbGFzb3ZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ25wciBqZWRuYWtvIDEwIGlsaSB2ZcSHZSBvZCA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnT2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ05lbWEgcG9kZcWhYXZhbmphIHphIG9jZW5qaXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpxI1uYSBvY2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ25wciBqZWRuYWtvIDI1JSBpbGkgdmXEh2Ugb2QgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnVnJlbWUga3JlaXJhbmphIMSMUFAgxI1sYW5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1ZyZW1lIHByb21lbmUgxIxQUCDEjWxhbmthJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ8SMUFAgaW5mb3JtYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnT2NlbmppdmFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdvZCA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR2xhc292aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdHbGFzb3ZpIG5pc3UgcHJvbmHEkWVuaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0dsYXNvdmkgbmlzdSBwcm9uYcSRZW5pISBCdWRpdGUgcHJ2aSBrb2ppIMSHZSBvY2VuaXRpIG92YWogxIxQUCDEjWxhbmFrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnUHJldXptaSBwcmlsb2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdEYSBiaXN0ZSBvdHZvcmlsaSB2ZXplIHUgc2xlZGXEh2ltIGJsb2tvdmltYSBvcGlzYSwgbW/FvmRhIMSHZXRlIHRyZWJhdGkgZGEgcHJpdGlzbmV0ZSDigJ5DdHJs4oCdIGlsaSDigJ5DbWTigJ0gaWxpIOKAnlNoaWZ04oCdIHRhc3RlciBkb2sgaXN0b3ZyZW1lbm8ga2xpa25ldGUgbmEgdmV6dSAoemF2aXNpIG9kIHZhxaFlZyBPUyBpIHByZWdsZWRhxI1hKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdLb2xpa28gamUga29yaXN0YW4gb3ZhaiDEjWxhbmFrPyBNb2xpbW8gdmFzIGRhIGRhdGUgdmHFoXUgb2NlbnUgaSBwb21vZ25ldGUgcG9kaXphbmp1IGt2YWxpdGF0YSBiYXplIMSNZXN0byBwb3N0YXZsamFuaWggcGl0YW5qYS4gSHZhbGEgVmFtISAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduaWplIGtvcmlzbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAndnJsbyBrb3Jpc25vJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdEb2RhaiDEjFBQIMSNbGFua3UgbmFzbG92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ1VuZXNpIMSMUFAgdGVrc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnVW5lc2kga29tcGxldGFuIMSMUFAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnVW5lc2kgxIxQUCB2ZXp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdVbmVzaSDEjFBQIHRla3N0IGkgdmV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnVW5lc2kga29tcGxldGFuIMSMUFAgaSB2ZXp1JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmlzdSBwcm9uYcSRZW5pIMSMUFAgxI1sYW5jaS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdPdm8gbW/FvmUgZGEgYnVkZSBvZCBwb21vxIdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdLb3Jpc25pIHJlc3Vyc2kgemEgdW5ldGkgcHJlZG1ldCBpIHRla3N0IG5pc3UgcHJvbmHEkWVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ1phIGxpc3R1IGtvcmlzbmloIHJlc3Vyc2EsIG1vbGltbyB1bmVzaXRlIHByZWRtZXQgaWxpIHRla3N0Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnUG90cHVuYSB0ZWtzdHVhbG5hIHByZXRyYWdhIHUgxIxQUCDEjWxhbmNpbWEgKG5wci4gIkpvaG4qbiIgaWxpICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnT2dyYW5pxI1lbmphIGdsYXNhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdTYW1vIMSMUFAgxI1sYW5jaSBzYSBnbGFzb3ZpbWEuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdPZ3JhbmnEjWVuamEgb2NlbmppdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnU2FtbyDEjFBQIMSNbGFuY2kgc2Egb2Nlbm9tLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdTYW1vIMSMUFAgxI1sYW5jaSBrcmVpcmFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdTYW1vIMSMUFAgxI1sYW5jaSBrcmVpcmFuaSBpem1lxJF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbCBwcmV0cmFnZSBrYW8gxaFhYmxvbj8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdCcm9qIMSNbGFua2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdUcmHFvmkgxI1sYW5rZSBzYSBrbGp1xI1ub20gcmXEjWknOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnSmF2bm8nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ05hemFkIG5hIMSMUFAgSXN0cmHFvml2YcSNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdQb3RyZWJuYSB2YW0gamUg4oCecnfigJ0gZG96dm9sYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0thdGVnb3JpamUgdSBrb2pvaiBrb3Jpc25payBpbWEgcHJpc3R1cCBiZXogb2dyYW5pxI1lbmphIG5pc3UgcHJvbmHEkWVuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTmlqZSBwcm9uYcSRZW4gcG9kcmF6dW1ldmFuaSBqZXppayBpIG5lIG1vxb5lIHNlIGtyZWlyYXRpIG5vdi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQb3RyZWJhbiBJRCBLYXRlZ29yaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWphIHRyZWJhIGRhIGltYSBpbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgS2F0ZWdvcmlqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkga2F0ZWdvcmlqdSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnxIxQUCBrYXRlZ29yaWphIGHFvnVyaXJhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfEjFBQIGthdGVnb3JpamEgZG9kYXRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBJRCBTdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmVtYXRlIGRvenZvbHUgemEgb3Z1IGthdGVnb3JpanUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ05pamUgYmlsbyBtb2d1xIdlIG9icmlzYXRpIMSMUFAgxI1sYW5hayAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnSUQgS2F0ZWdvcmlqZSAlcyBqZSBuZWlzcHJhdmFuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGlzdG9yaWphdCwgamVyIG5pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICfEjFBQIGlzdG9yaWphJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnxIxQUCBkbmV2bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1BvdHJlYm5hIGtvbmZpZ3VyYWNpb25hIG9wY2lqYSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdLb25maWd1cmFjaW9uYSBvcGNpamEgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbW9yYSBkYSBidWRlIEhBU0ggcmVmZXJlbmNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05pamUgcHJvbmHEkWVuYSBrb25maWd1cmFjaW9uYSBzdGF2a2EgemEgcHJlZ2xlZCAiJXMiISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBJRCBKZXppa2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ltZSBqZSBvYmF2ZXpubyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmFqIGplemlrIHZlxIcgcG9zdG9qaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgamV6aWsgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0HFvnVyaXJhbiDEjFBQIGplemlrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRG9kYXQgxIxQUCBqZXppayEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnUG9zbGVkbmplIGHFvnVyaXJhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ8SMUFAgZGluYW1pxI1rYSBwb2xqYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0plemnEjWtpIG9iamVrdCBzZSBuZSBtb8W+ZSB1xI1pdGF0aSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVtYSByZXp1bHRhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICfEjFBQIGJyb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnUG9zbGVkbmppIGplIG1lbmphbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSDEjFBQIHN0YXZrZSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBrcmVpcmFuamEgxIxQUCBzdGF2a2UgKGl6bWXEkXUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVnJlbWUgaXptZW5lIMSMUFAgc3RhdmtlIChwcmUvcG9zbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1ZyZW1lIGl6bWVuZSDEjFBQIHN0YXZrZSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSmVkbmFrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdWZcSHZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnSmVkbmFrbyBpbGkgdmXEh2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTWFuamUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0plZG5ha28gaWxpIG1hbmplIG9kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ1BvdHJlYmFuIElEIFBvbGphISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdIdmFsYSBuYSB2YcWhZW0gZ2xhc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVmXEhyBzdGUgZ2xhc2FsaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWplIGl6YWJyYW5hIG5pIGplZG5hIG9jZW5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdNZWhhbml6YW0gemEgZ2xhc2FuamUgbmlqZSBha3RpdmlyYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnT2NlbmppdmFuamUgZ2xhc2FuamEgbmlqZSBkZWZpbmlzYW5vISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfFoHRhbXBhIMSMUFAgxI1sYW5rYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0tyZWlyYW4gaXptZcSRdSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICdQb3RyZWJhbiBJRCBTdGF2a2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfEjFBQIMSNbGFuY2kgKG5vdmkga3JlaXJhbmkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfEjFBQIMSNbGFuY2kgKG5lZGF2bm8gbWVuamFuaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnxIxQUCDEjWxhbmNpIChwcnZpaCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBUaXAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ1R5cGUgbW9yYSBiaXRpIExhc3RDcmVhdGUsIExhc3RDaGFuZ2UgaWxpIFRvcDEwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ1JTUyBkYXRvdGVrYSBuZSBtb8SHZSBiaXRpIHNuaW1samVuYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKMSMUFAga29tcGxldGFuIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gS2xpamVudCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gS2xpamVudCAoxIxQUCBrb21wbGV0YW4gdGVrc3QpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIEphdm5vICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gSmF2bm8gKMSMUFAga29tcGxldGFuIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICdOZW9waG9kbmEgb2NlbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfEjGxhbmFrIGplIHByYXphbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnUG9zbGVkbmplIGtyZWlyYW5pIMSMUFAgxI1sYW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdQb3NsZWRuamUgYcW+dXJpcmFuaSDEjFBQIMSNbGFuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1BydmloIDEwIMSMUFAgxI1sYW5ha2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwIHNhZHLFvmFqYSc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ2phdm5vJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRmlsdGVyIHphIOKAnkhUTUzigJ0gaXpsYXogemEgZG9kYXZhbmplIHZlemUgaXphIGRlZmluaXNhbm9nIG5pemEgem5ha292YS4gRWxlbWVudCBTbGlrYSBkb3p2b2xqYXZhIGR2YSBuYcSNaW5hIHVub3NhLiBQcnZpIGplIG5heml2IHNsaWtlIChucHIgZmFxLnBuZykuIHUgb3ZvbSBzbHXEjWFqdSBiacSHZSBrb3JpxaHEh2VuYSDigJ5PVFJT4oCdIHB1dGFuamEgZG8gc2xpa2UuICBEcnVnYSBtb2d1xIdub3N0IGplIHVub3MgdmV6ZSBkbyBzbGlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnRG9kYWogxIxQUCDEjWxhbmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn4oCeQ1NT4oCdIGJvamEgemEgcmV6dWx0YXQgZ2xhc2FuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdWcmVtZSBvc2xvYmHEkWFuamEga2XFoWEgemEgxIxQUCBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBrYXRlZ29yaWphbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ8WgdGFtcGFuamUga2xpamVudHNraWggxIxQUC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnRGV0YWxqaSBrbGlqZW50c2tpaCDEjFBQLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ1ByZXRyYWdhIGtsaWplbnRza2loIMSMUFAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdLbGlqZW50c2thIMSMUFAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJ0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdCcm9qIGRlY2ltYWxhIHUgcmV6dWx0YXR1IGdsYXNhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTmF6aXYgcG9kcmF6dW1ldmFuZSBrYXRlZ29yaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnUG9kcmF6dW1ldmFuaSBqZXppayDEjFBQIMSNbGFuYWthIHUgamVkbm9qZXppxI1rb20gbmHEjWludSByYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5hIG1ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIMSMUFAgxI1sYW5rYSBrb2phIMSHZSBiaXRpIHByaWthemFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBwcmlvcml0ZXQgdGlrZXRhIHphIG9kb2JyYXZhbmplIMSMUFAgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdQb2RyYXp1bWV2YW5vIHN0YW5qZSDEjFBQIHVub3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUG9kcmF6dW1ldmFubyBzdGFuamUgdGlrZXRhIHphIG9kb2JyYXZhbmplIMSMUFAgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1BvZHJhenVtZXZhbmkgdGlwIHRpa2V0YSB6YSBvZG9icmF2YW5qZSDEjFBQIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuYSB2cmVkbm9zdCB6YSDigJ5BY3Rpb27igJ0gcGFyYW1ldGFyIHUgamF2bm9tIGZyb250ZW5kdS4gT3ZhaiBwYXJhbWV0YXIga29yaXN0ZSBza3JpcHRlIHNpc3RlbWEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIEFrY2lqZSBnZGUgamUgZHVnbWUgcG9zdGF2a2kgZG9zdHVwbm8gdSBwb3ZlemFub20gZ3JhZmnEjWtvbSBlbGVtZW50dSBvYmpla3RhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE1vbGltbyBkYSBpbWF0ZSBuYSB1bXUgZGEgb3ZlIEFrY2lqZSBtb3JhanUgZGEgYnVkdSByZWdpc3Ryb3ZhbmUgdSBzbGVkZcSHaW0gSlMgaSBDU1MgZGF0b3Rla2FtYTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnT2RyZcSRdWplIGRhIGxpIG5hc2xvdiDEjFBQIHRyZWJhIGRhIGJ1ZGUgZG9kYXQgbmEgdGVtdSDEjWxhbmthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEZWZpbmnFoWUga29qZSBrb2xvbmUgc3UgcHJpa2F6YW5lIHUgcG92ZXphbm9tIMSMUFAgZ3JhZmnEjWtvbSBlbGVtZW50dSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOYXBvbWVuYTogU2FtbyDEjFBQIGF0cmlidXRpIGkgRGluYW1pxI1rYSBwb2xqYSAoRHluYW1pY0ZpZWxkX05hbWVYKSBzdSBkb3p2b2xqZW5pIHphIHBvZHJhenVtZXZhbmUga29sb25lLiBNb2d1xIdlIHBvc3RhdmtlOiAwID0gb25lbW9ndcSHZW5vLCAxID0gZG9zdHVwbm8sIDIgPSBwb2RyYXp1bWV2YW5vIGFrdGl2aXJhbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiDEjFBQIGRuZXZuaWthLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIG1vZHVsIHByZWdsZWRhIHphIG1hbGkgcHJpa2F6IMSMUFAgbGlzdGUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIMSMUFAgdSBwcmV0cmF6aSDEjFBQICB1IGludGVyZmVqc3UgIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgemEgc29ydGlyYW5qZSDEjFBQIHUgcHJldHJhemkgxIxQUCAgdSBpbnRlcmZlanN1ICBrb3Jpc25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIMSMUFAgdSBwcmV0cmF6aSDEjFBQICB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgemEgc29ydGlyYW5qZSDEjFBQIHUgxIxQUCBpc3RyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIMSMUFAgdSDEjFBQIGlzdHJhxb5pdmHEjXUgdSBpbnRlcmZlanN1IGtvcmlzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIMSMUFAgdSDEjFBQIGlzdHJhxb5pdmHEjXUgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSByZWRvc2xlZCDEjFBQIHUgcmV6dWx0YXRpbWEgxIxQUCBpc3RyYcW+aXZhxI1hICB1IGludGVyZmVqc3Ugb3ByZXJhdGVyYS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSByZWRvc2xlZCDEjFBQIHUgcmV6dWx0YXRpbWEgxIxQUCBpc3RyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuIEdvcmU6IE5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogTmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIMSMUFAgdSByZXp1bHRhdGltYSDEjFBQIGlzdHJhxb5pdmHEjWEgdSBqYXZub20gaW50ZXJmZWpzdS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgxIxQUCB1IHJlenVsdGF0aW1hIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBvcHJlcmF0ZXJhLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSByZWRvc2xlZCDEjFBQIHUgcmV6dWx0YXRpbWEgcHJldHJhZ2UgdSBpbnRlcmZlanN1IGtvcmlzbmlrYS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIMSMUFAgdSByZXp1bHRhdGltYSBwcmV0cmFnZSB1IGphdm5vbSBpbnRlcmZlanN1LiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHByaWthemFuaSDEjFBQIGF0cmlidXQgcHJldHJhZ2UgemEgxIxQUCBwcm96b3IgemEgcHJldHJhZ3UuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgaW5mb3JtYWNpamUga29qZSDEh2UgYml0aSB1YmHEjWVuZSB1IMSMUFAgYmF6aXJhbmkgdGlrZXQuIOKAnktvbXBsZXRhbiDEjFBQ4oCdIHVrbGp1xI11amUgdGVrc3QsIHByaWxvZ2UgaSB1bWV0bnV0ZSBzbGlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvemFkaW5za2UgcGFyYW1ldHJlIHphIGtvbnRyb2xudSB0YWJsdS4gIkxpbWl0IiBkZWZpbmnFoWUgYnJvaiBwb2RyZXp1bWV2YW5vIHByaWthemFuaWggdW5vc2EuICJHcnVwYSIgc2Uga29yaXN0aSBkYSBvZ3JhbmnEjWkgcHJpc3R1cCBkb2RhdGt1IChucHIuIEdydXBhOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuIlBvZHJhenVtZXZhbm8iIHVrYXp1amUgbmEgdG8gZGEgbGkgamUgZG9kYXRhayBwb2RyYXp1bWV2YW5vIGFrdGl2aXJhbiBpbGkgZGEgamUgcG90cmVibm8gZGEgZ2Ega29yaXNuaWsgbWFudWVsbm8gYWt0aXZpcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgxIxQUCBpc3RyYcW+aXZhxI11LiBPdmEgb3BjaWplIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSB1IMSMUFAgZG5ldm5pa3UuIE92YSBvcGNpamUgbmVtYSB1dGljYWogbmEgcG96aWNpamUga29sb25hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUgdSDEjFBQIHByZXRyYXppLiBPdmEgb3BjaWplIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmnFoWUgZ2RlIMSHZSDigJ51YmFjaSDEjFBQ4oCdIHZlemEgYml0aSBwcmlrYXphbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNpamEgcG9samEgc2xvYm9kbm9nIHRla3N0YSB6YSDEjFBQIHN0YXZrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnT2JyacWhaSBvdm8gxIxQUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIG5hIGVrcmFudSBkb2RhdmFuamEgxIxQUCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8sIDIgPSBPbW9ndcSHZW5vIGkgbmVvcGhvZG5vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgaXptZW5lIMSMUFAgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4gTW9ndcSHYSBwb2RlxaFhdmFuamE6IDAgPSBPbmVtb2d1xIdlbm8sIDEgPSBPbW9ndcSHZW5vLCAyID0gT21vZ3XEh2VubyBpIG5lb3Bob2Ruby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIG5hIGVrcmFudSBwcmVnbGVkYSDEjFBQIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuIE1vZ3XEh2EgcG9kZcWhYXZhbmphOiAwID0gT25lbW9ndcSHZW5vLCAxID0gT21vZ3XEh2VubywgMiA9IE9tb2d1xIdlbm8gaSBuZW9waG9kbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgbmEgZWtyYW51IHByZWdsZWRhIMSMUFAgdSBqYXZub20gaW50ZXJmZWpzdS4gTW9ndcSHYSBwb2RlxaFhdmFuamE6IDAgPSBPbmVtb2d1xIdlbm8sIDEgPSBPbW9ndcSHZW5vLCAyID0gT21vZ3XEh2VubyBpIG5lb3Bob2Ruby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgemEgxaF0YW1wdSDEjFBQIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIE1vZ3XEh2EgcG9kZcWhYXZhbmphOiAwID0gT25lbW9ndcSHZW5vLCAxID0gT21vZ3XEh2Vuby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgemEgxaF0YW1wdSDEjFBQIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuIE1vZ3XEh2EgcG9kZcWhYXZhbmphOiAwID0gT25lbW9ndcSHZW5vLCAxID0gT21vZ3XEh2Vuby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgbmEgZWtyYW51IHphIMWhdGFtcHUgxIxQUCB1IGphdm5vbSBpbnRlcmZlanN1LiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgcHJldHJhZ2UgxIxQUCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8sIDIgPSBPbW9ndcSHZW5vIGkgcG9kcmF6dW1ldmFubyBzZSBwcmlrYXp1amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgcHJldHJhZ2UgxIxQUCB1IGludGVyZmVqc3Uga29yaXNuaWthLiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8sIDIgPSBPbW9ndcSHZW5vIGkgcG9kcmF6dW1ldmFubyBzZSBwcmlrYXp1amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgbmEgZWtyYW51IHByZXRyYWdlIMSMUFAgdSBqYXZub20gaW50ZXJmZWpzdS4gTW9ndcSHYSBwb2RlxaFhdmFuamE6IDAgPSBPbmVtb2d1xIdlbm8sIDEgPSBPbW9ndcSHZW5vLCAyID0gT21vZ3XEh2VubyBpIHBvZHJhenVtZXZhbm8gc2UgcHJpa2F6dWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgcHJlZ2xlZGEgxIxQUCBtYWxvZyBmb3JtYXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIE1vZ3XEh2EgcG9kZcWhYXZhbmphOiAwID0gT25lbW9ndcSHZW5vLCAxID0gT21vZ3XEh2Vuby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIG5hIGVrcmFudSBkZXRhbGpub2cgcHJlZ2xlZGEgxIxQUCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSBuYSBla3JhbnUgZGV0YWxqbm9nIHByZWdsZWRhIMSMUFAgdSBpbnRlcmZlanN1IGtvcmlzbmlrYS4gTW9ndcSHYSBwb2RlxaFhdmFuamE6IDAgPSBPbmVtb2d1xIdlbm8sIDEgPSBPbW9ndcSHZW5vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIG5hIGVrcmFudSBkZXRhbGpub2cgcHJlZ2xlZGEgxIxQUCB1IGphdm5vbSBpbnRlcmZlanN1LiBNb2d1xIdhIHBvZGXFoWF2YW5qYTogMCA9IE9uZW1vZ3XEh2VubywgMSA9IE9tb2d1xIdlbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdVcmVkaSBvdm8gxIxQUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aXZpcmFuamUgdmnFoWUgamV6aWthIG5hIMSMUFAgbW9kdWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICdBa3RpdmlyYSBmdW5rY2lqdSBwb3ZlemFub2cgxI1sYW5rYSB6YSBpbnRlcmZlanMga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aXZpcmFuamUgbWVoYW5pem1hIHphIGdsYXNhbmplIG5hIMSMUFAgbW9kdWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0lzdHJhxb5pdmHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICfEjFBQIOKAnkFKQVjigJ0gb2Rnb3ZhcmHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ8SMUFAg4oCeQUpBWOKAnSBvZGdvdmFyYcSNIHphIOKAnlJpY2h0ZXh04oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ8SMUFAgcHJvc3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfEjFBQIHByb3N0b3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnT2JyacWhaSDEjFBQLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdVcmVkaSDEjFBQLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIHByZWdsZWRhIMSMUFAgZG5ldm5pa2EgLSAibWFsbyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUgcHJlZ2xlZGEgxIxQUCAtICJtYWxvIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnxaB0YW1wYWogxIxQUC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnT2dyYW5pxI1lbmplIGJyb2phIMSMUFAgcG8gc3RyYW5pIHphIHByZWdsZWQgxIxQUCBkbmV2bmlrYSAtICJtYWxvIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnT2dyYW5pxI1lbmplIGJyb2phIMSMUFAgcG8gc3RyYW5pIHphIHByZWdsZWQgxIxQUCAtICJtYWxvIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnxIxQUHByZXRyYWdhIHBvemFkaW5za29nIHJ1dGVyYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdQb2xqZTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnUG9samU1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnS29tcGxldGFuIMSMUFAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cGEgemEgb2RvYnJhdmFuamUgxIxQUCDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0lzdG9yaWphdCBvdm9nIMSMUFAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1VrbGp1xI1pIGludGVybmEgcG9samEgdSDEjFBQIGJhemlyYW4gdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnVWtsanXEjWkgbmF6aXYgc3Zha29nIHBvbGphIHUgxIxQUCBiYXppcmFuIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmVqcyBuYSBrb20gdHJlYmEgcHJpa2F6YXRpIGJyenUgcHJldHJhZ3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdEbmV2bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBqZXppY2ltYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ09ncmFuacSNZW5qZSBwcmV0cmFnZSB6YSBnZW5lcmlzYW5qZSBsaXN0ZSBrbGp1xI1uaWggcmXEjWkgxIxQUCDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnUG92ZcW+aSBkcnVnaSBvYmpla2F0IHNhIG92b20gc3RhdmtvbSDEjFBQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgaW1lbmEgcmVkb3ZhIHphIGtvamUgamUgZnVuY2lqYSBwb3ZlemFub2cgxI1sYW5rYSBha3RpdmlyYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSB0aXBvdmEgc3RhbmphIGtvamkgc2UgbW9ndSBrb3Jpc3RpdGkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgdGlwb3ZhIHN0YW5qYSBrb2ppIHNlIG1vZ3Uga29yaXN0aXRpIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSB0aXBvdmEgc3RhbmphIGtvamkgc2UgbW9ndSBrb3Jpc3RpdGkgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIMSMUFAgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgxIxQUCBpc3RyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiDEjFBQIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IMSMUFAgaXN0cmHFvml2YcSNYSB1IGludGVyZmVqc3Uga29yaXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIMSMUFAgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgxIxQUCBpc3RyYcW+aXZhxI1hIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogxIxQUCDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IMSMUFAgZG5ldm5pa3UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogxIxQUCDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IHJlenVsdGF0dSBwcmV0cmFnZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiDEjFBQIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiDEjFBQIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IHByZXRyYWdlIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSDEjFBQIMSNbGFuYWt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgxIxQUCBpc3RyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSDEjFBQIMSNbGFuYWt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgxIxQUCBpc3RyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSDEjFBQIMSNbGFuYWt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgxIxQUCBpc3RyYcW+aXZhxI11IHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgxIxQUCDEjWxhbmFrdSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IMSMUFAgcHJldHJhemkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSDEjFBQIMSNbGFuYWt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgxIxQUCBwcmV0cmF6aSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IMSMUFAgxI1sYW5ha3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSDEjFBQIHByZXRyYXppIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IMSMUFAgxI1sYW5ha3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSDEjFBQIGRuZXZuaWt1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgemEgZ2VuZXJpc2FuamUg4oCeSFRNTCBPcGVuU2VhcmNo4oCdIHByb2ZpbGEgemEga3JhdGt1IMSMUFAgcHJldHJhZ3UgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB6YSBnZW5lcmlzYW5qZSDigJ5IVE1MIE9wZW5TZWFyY2jigJ0gcHJvZmlsYSB6YSBrcmF0a3UgxIxQUCBwcmV0cmFndSB1IGphdm5vbSBwcm9maWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB6YSBnZW5lcmlzYW5qZSDigJ5odG1sIE9wZW5TZWFyY2jigJ0gcHJvZmlsYSB6YSBrcmF0a3UgxIxQUCBwcmV0cmFndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTm92aSDEjFBQIMSNbGFuYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92aSDEjFBQIMSNbGFuY2kgdHJlYmFqdSBiaXRpIG9kb2JyZW5pIHByZSBvYmphdmxqaXZhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIMSMUFAgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSDEjFBQIElzdHJhxb5pdmHEjXUgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQnJvaiDEjFBQIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgxIxQUCBJc3RyYcW+aXZhxI11IHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogxIxQUCDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSBuYSBzdmFrb2ogc3RyYW5pIHJlenVsdGF0YSBwcmV0cmFnZSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIMSMUFAgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgbmEgc3Zha29qIHN0cmFuaSByZXp1bHRhdGEgcHJldHJhZ2UgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdCcm9qIHByaWthemFuaWggc3RhdmtpIHUgcG9zbGVkbmppbSBpem1lbmFtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdCcm9qIHByaWthemFuaWggc3RhdmtpIHUgcG9zbGVkbmplIGtyZWlyYW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdCcm9qIHByaWthemFuaWggc3RhdmtpIHUgInBydmloIDEwIiAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICdJemxhem5pIGZpbHRlciB6YSB1YmFjaXZhbmplIEphdmFTY3JpcHQgdSBDdXN0b21lclRpY2tldE1lc3NhZ2UgZWtyYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ09ncmFuacSNZW5qZSBpemxhemEgemEgcG92ZXphbmUgxIxQUCDEjWxhbmFrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHN0cmFuaWNhIChuYSBrb2ppbWEgc3UgxIxQUCBzdGF2a2UgcHJpa2F6YW5lKSBuYSBtYWxvbSBwcmlrYXp1IHByZWdsZWRhIMSMUFAgZG5ldm5pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cmkgc3RyYW5pY2EgKG5hIGtvamltYSBzdSB2aWRsaml2ZSDEjFBQIHN0YXZrZSkgc21hbmplbm9nIHByZWdsZWRhIMSMUFAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnxaB0YW1wYWogb3ZvIMSMUFAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICfFoHRhbXBhbmplIGphdm5paCDEjFBQLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnRGV0YWxqaSBqYXZuaWggxIxQUC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnUHJldHJhZ2EgamF2bmloIMSMUFAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnSmF2bm8gxIxQUC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUmVkIHphIG9kb2JyYXZhbmplIMSMUFAgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnT2NlbmUgemEgZ2xhc2FuamUuIEtsanXEjSBtb3JhIGJpdGkgdSBwcm9jZW50aW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUHJldHJhxb5pIMSMUFAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdQb2Rlc2kgcG9kcmF6dW1ldmFudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdQb2Rlc2kgcG9kcmF6dW1ldmFudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEN1c3RvbWVyRkFRWm9vbSAoaSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnUG9kZXNpIG1ha3NpbWFsbnUgdmlzaW51ICh1IHBpa3NlbGltYSkgaW5saW5lIEhUTUwgcG9samEgdSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnUG9kZXNpIG1ha3NpbWFsbnUgdmlzaW51ICh1IHBpa3NlbGltYSkgaW5saW5lIEhUTUwgcG9samEgdSBDdXN0b21lckZBUVpvb20gKGkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnUHJpa2HFvmkgIlViYWNpIMSMUFAgbGluayIgZHVnbWUgdSBBZ2VudEZBUVpvb21TbWFsbCB6YSBqYXZuZSDEjFBQIGFydGlrbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaWthxb5pICJVYmFjaSDEjFBQIFRla3N0IGkgTGluayIgLyAiVWJhY2kgQ2VvIMSMUFAgaSBMaW5rIiBkdWdtZSB1IEFnZW50RkFRWm9vbVNtYWxsIHphIGphdm5lIMSMUFAgYXJ0aWtsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1ByaWthxb5pICJVYmFjaSDEjFBQIHRla3N0IiAvICJVYmFjaSBDZW8gxIxQUCIgZHVnbWUgdSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnUHJpa2F6IMSMUFAgxI1sYW5rYSBrYW8g4oCeSFRNTOKAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnUHJpa2HFvmkgcHV0YW5qdSBkbyDEjFBQIGRhL25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWtheiBuZWlzcHJ2bmloIHN0YXZraSB1IHJlenVsdGF0aW1hIMSMUFAgaXN0cmHFvml2YcSNYSBuYSBpbnRlcmZlanN1IG9wZXJhdGVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnUHJpa2HFvmkgc3RhdmtlIHN1YmthdGVnb3JpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIHphZG5qZSBwcm9tZW5qZW5lIHN0YXZrZSB1IGRlZmluaXNhbmltIGludGVyZmVqc2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIHphZG5qZSBrcmVpcmFuZSBzdGF2a2UgdSBkZWZpbmlzYW5pbSBpbnRlcmZlanNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ1ByaWthxb5pIHp2ZXpkaWNlIHphIMSNbGFua2Ugc2EgamVkbmFrb20gaWxpIGJvbGpvbSBvY2Vub20gb2Qgb2RyZcSRZW5lIHZyZWRub3N0aSAocG9zdGF2aSB2cmVkbm9zdCAwIHphIGRlYWt0aXZpcmFuamUgaXpsYXphKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIHBydmloIDEwIHN0YXZraSB1IGRlZmluaXNhbmltIGludGVyZmVqc2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIGdsYXNhbmplIHUgZGVmaW5pc2FuaW0gaW50ZXJmZWpzaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ2nEh2F2YSBwb3Zleml2YW5qZSDEjFBQIHNhIGRydWdpbSBvYmpla3RvbSB1IGRldGFsam5vbSBwcmlrYXp1IHRvZyDEjFBQIHUgb3BlcmF0ZXJza29tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9nacSHYXZhIGJyaXNhbmplIMSMUFAgdSBkZXRhbGpub20gcHJpa2F6dSBvcGVyYXRlcnNrb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUgxIxQUCB1IGRldGFsam5vbSBwcmlrYXp1IG9wZXJhdGVyc2tvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgaXptZW51IMSMUFAgdSBkZXRhbGpub20gcHJpa2F6dSBvcGVyYXRlcnNrb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIHUgZGV0YWxqbmkgcHJpa2F6IMSMUFAgdSBvcGVyYXRlcnNrb20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSDFoXRhbXBhbmplIMSMUFAgdSBkZXRhbGpub20gcHJpa2F6dSBvcGVyYXRlcnNrb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdSZcWhZW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU2ltcHRvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdTYW1vIHRla3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ1BvZHJhenVtZXZhbmkgamV6aWNpIHphIHBvdmV6YW5lIMSMUFAgxI1sYW5ha2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgemEgxIxQUCwgbnByIMSMUFAjLCBCWiMsIE1vasSMUFAjLiBQb2RyYXp1bWV2YW5vIGplIMSMUFAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSDEjFBQIG9iamVrdCBtb8W+ZSBkYSBzZSBwb3Zlxb5lIHNhIGRydWdpbSDEjFBQIG9iamVrdGltYSBrb3Jpc3RlxIdpIOKAnm5vcm1hbG514oCdIHZlenUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnT3ZvIHBvZGXFoWF2YW5qZSBkZWZpbmnFoWUgZGEgxIxQUCBvYmpla3QgbW/FvmUgZGEgc2UgcG92ZcW+ZSBzYSBkcnVnaW0gxIxQUCBvYmpla3RpbWEga29yaXN0ZcSHaSB2ZXp1IHRpcGEg4oCecm9kaXRlbGovcG90b21ha+KAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnT3ZvIHBvZGXFoWF2YW5qZSBkZWZpbmnFoWUgZGEgxIxQUCBvYmpla3QgbW/FvmUgZGEgc2UgcG92ZcW+ZSBzYSBkcnVnaW0gdGlrZXQgb2JqZWt0aW1hIGtvcmlzdGXEh2kg4oCebm9ybWFsbnXigJ0gdmV6dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSDEjFBQIG9iamVrdCBtb8W+ZSBkYSBzZSBwb3Zlxb5lIHNhIGRydWdpbSB0aWtldCBvYmpla3RpbWEga29yaXN0ZcSHaSB2ZXp1IHRpcGEg4oCecm9kaXRlbGovcG90b21ha+KAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1NhZHLFvmFqIHRpa2V0YSB6YSBvZG9icmF2YW5qZSDEjFBQIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnUHJlZG1ldCB0aWtldGEgemEgb2RvYnJhdmFuamUgxIxQUCDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ1N0YXZrYSBhbGF0bmUgbGluaWplIHphIHNrcmHEh2VuaWN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZWtzdGVybm8gKGtsaWplbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChvcGVyYXRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnamF2bm8gKGphdm5vKSc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdTa2FwYSBGQVEgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ055Y2tlbG9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0VuIGthdGVnb3JpIGtyw6R2cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2Rrw6RubmFuZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIGthdGVnb3JpaGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ1NrYXBhIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1RhIGJvcnQga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnUmVkaWdlcmEga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIHRpbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdWw6RubGlnZW4gdsOkbGogbWluc3QgZW4gcsOkdHRpZ2hldHNncnVwcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQtZ3J1cHBlciBtZWQgw6V0a29tc3QgdGlsbCBhcnRpa2xhcm5hIGkgZGVubmEga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaXNhcyBzb20ga29tbWVudGFyIGkgVXRmb3Jza2FyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGRlbm5hIGthdGVnb3JpPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0R1IGthbiBpbnRlIHRhIGJvcnQgZGVubmEga2F0ZWdvcmluLiBEZXQgYW52w6RuZHMgYXYgbWluc3QgZW4gRkFRLWFydGlrZWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGVubmEga2F0ZWdvcmkgYW52w6RuZHMgYXYgZsO2bGphbmRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdEZW5uYSBrYXRlZ29yaSDDpHIgZsO2csOkbGRlciBmw7ZyIGbDtmxqYW5kZSB1bmRlcmthdGVncm9pZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZW5uYSBGQVEtYXJ0aWtlbD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtdXRmb3Jza2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTbmFiYnPDtmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0pva2VydGVja2VuIMOkciB0aWxsw6V0bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0F2YW5jZXJhZCBzw7ZrbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0luZ2EgdW5kZXJrYXRlZ29yaWVyIGhpdHRhZGVzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWsgZsO2cic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEZXQgZmlubnMgaW5nZW4gZGF0YSBpIEZBUS1sb2dnYm9rZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIHNwcsOla2hhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnVGEgYm9ydCBzcHLDpWsgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1JlZGlnZXJhIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXR0YSBzcHLDpWs/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ0R1IGthbiBpbnRlIHRhIGJvcnQgZGV0dGEgc3Byw6VrLiBEZXQgYW52w6RuZHMgaSBtaW5zdCBlbiBGQVEtYXJ0aWtlbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEZXR0YSBzcHLDpWsgYW52w6RuZHMgYXYgZsO2bGphbmRlIEZBUS1hcnRpa2xhcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0FucGFzc2EgdnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnRkFRLWFydGlrbGFyIHBlciBzaWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0luZ2VuIEZBUS1pbmZvcm1hdGlvbiBoaXR0YWRlcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnTnlja2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdSw7ZzdGVyIChleC4gbGlrYSBtZWQgMTAgZWxsZXIgZmxlciDDpG4gNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0JldHlnIChleC4gbGlrYSBtZWQgMjUlIGVsbGVyIG1lciDDpG4gNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0dvZGvDpG5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1NlbmFzdCDDpG5kcmFkIGF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIFNrYXBhZCBUaWQgKG1lbGxhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWtlbCDDhG5kcmFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIMOEbmRyYWQgVGlkIChtZWxsYW4pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUS1GdWxsdGV4dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBzw7ZrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUHJvZmlsdmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdSw7ZzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0luZ2EgcsO2c3RpbnN0w6RsbG5pbmdhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1NwZWNpZmlrYSByw7ZzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2UuZy4gTGlrYSBtZWQgMTAgZWxsZXIgU3TDtnJyZcOEbiA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnQmV0eWdzw6R0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnSW5nYSBiZXR5Z3NpbnN0w6RsbG5pbmdhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnU3BlY2lmaWt0IGJldHlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZS5nLiBMaWthIG1lZCAyNSUgZWxsZXIgU3TDtnJyZcOEbiA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVEtQXJ0aWtlbCBTa2FwYWQgVGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIGFydGlrZWwgw6RuZHJpbmdzdGlkcHVua3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRLUluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0JldHlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnYXYgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1LDtnN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISBCbGkgZGVuIGbDtnJzdGEgYXR0IGJldHlnc8OkdHRhIGRlbm5hIEZBUS1hcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTGFkZGEgbmVyIGJpbGFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0bDtnIgYXR0IMO2cHBuYSBsw6Rua2FyIGkgZsO2bGphbmRlIGJlc2tyaXZuaW5nc2Jsb2NrIGJlaMO2dmVyIGR1IGthbnNrZSB0cnlja2EgPEN0cmw+IGVsbGVyIDxDbWQ+IGVsbGVyIDxTaGlmdD4gbWVkYW4gZHUga2xpY2thciBww6UgbMOkbmtlbiAoYmVyb2VuZGUgcMOlIHZpbGtlbiB3ZWJibMOkc2FyZSBlbGxlciBvcGVyYXRpdnN5c3RlbSBkdSBoYXIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0h1ciBoasOkbHBzYW0gdmFyIGRlbiBow6RyIGFydGlrZWxuPyBWw6RubGlnZW4gZ2Ugb3NzIGRpdHQgYmV0eWcgb2NoIGhqw6RscCBvc3MgZsO2cmLDpHR0cmEgRkFRLWRhdGFiYXNlbi4gVGFjayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpbnRlIGhqw6RscHNhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2w6RsZGlndCBoasOkbHBzYW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0zDpGdnIHRpbGwgRkFRLXRpdGVsbiB0aWxsIGFydGlrZWxucyDDpG1uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdLbGlzdHJhIGluIGzDpG5rIHRpbGwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0ICYgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSAmIGzDpG5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnSW5nYSBGQVEgYXJ0aWtsYXIgZnVubmEuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRGVzc2EgYXJ0aWtsYXIga2FuIHZhcmEgYW52w6RuZGJhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ0hpdHRhZGUgaW5nYSBhbnbDpG5kYmFyYSBhcnRpa2xhciBmw7ZyIGRldHRhIMOkbW5ldCBvY2ggdGV4dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdTa3JpdiBldHQgw6RtbmUgZWxsZXIgdGV4dCBmw7ZyIGF0dCBmw6UgZW4gbGlzdGEgw7Z2ZXIgaGrDpGxwZnVsbGEgYXJ0aWtsYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0Z1bGx0ZXh0LXPDtmsgaSBGQVEtYXJ0aWtsYXIgKGUuIGcuICJKb2huKm4iIGVsbGVyICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUsO2c3QtcmVzdHJpa3Rpb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBtZWQgcsO2c3Rlci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JldHlncy1yZXN0cmlrdGlvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgbWVkIGJldHlnLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdFbmRhc3QgRkFRIGFydGlrbGFyIHNrYXBhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBza2FwYWRlIG1lbGxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdTw7ZrLXByb2ZpbCBzb20gbWFsbD8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpa2VsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnU8O2ayBlZnRlciBhcnRpa2xhciBtZWQgbnlja2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09mZmVudGxpZyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGlsbGJha2EgdGlsbCBGQVEtdXRmb3Jza2FyZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ0R1IGJlaMO2dmVyIHJ3LWJlaMO2cmlnaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdJbmdhIGthdGVnb3JpZXIgaGl0dGFkZXMgZMOkciBhbnbDpG5kYXJlbiBoYXIgbMOkcy9za3Jpdi1yw6R0dGlnaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VuIGthdGVnb3JpIGJlaMO2dmVyIGV0dCBuYW1uISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGVubmEga2F0ZWdvcmkgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEta2F0ZWdvcmkgdXBwZGF0ZXJhZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUS1rYXRlZ29yaSB0aWxsYWdkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRLWhpc3RvcmlrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRLWxvZ2dib2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYW1uIGtyw6R2cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEZXR0YSBzcHLDpWsgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEtc3Byw6VrIHVwcGRhdGVyYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdGQVEtc3Byw6VrIHNrYXBhdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnU2VuYXN0IHVwcGRhdGVyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaXNrYSBGw6RsdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdldCByZXN1bHRhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUS1udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnU2VuYXN0IMOkbmRyYWQgYXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEtQXJ0aWtlbCBTa2FwYWQgVGlkIChmw7ZyZS9lZnRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCAobWVsbGFuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpa2VsIMOEbmRyYWQgVGlkIChmw7ZyZS9lZnRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRLUFydGlrZWwgw4RuZHJhZCBUaWQgKG1lbGxhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUYWNrIGbDtnIgZGluIHLDtnN0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0R1IGhhciByZWRhbiByw7ZzdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0luZ2V0IGJldHlnIHNhdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEtYXJ0aWtlbCB1dHNrcmlmdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NrYXBhdCBtZWxsYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdGQVEtYXJ0aWtsYXIgKG55bGlnZW4gc2thcGFkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRLWFydGlrbGFyIChueWxpZ2VuIMOkbmRyYWRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVEtYXJ0aWtsYXIgKFRvcHAgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0RlbiBow6RyIGFydGlrZWxuIMOkciB0b20hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1NlbmFzdCBza2FwYWRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTZW5hc3QgdXBwZGF0ZXJhZGUgRkFRLWFydGlrbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3BwIDEwIEZBUS1hcnRpa2xhcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdvZmZlbnRsaWcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnTMOkZ2cgdGlsbCBGQVEtYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1JhZGVyYSBkZW5uYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdSZWRpZ2VyYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdVdGZvcnNrYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVEtaGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnTG9nZ2Jvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6VraGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0zDpG5rYSBldHQgYW5uYXQgb2JqZWt0IHRpbGwgZGVubmEgRkFRLWFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICdOeSBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdTa3JpdiB1dCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS8O2IGbDtnIgZ29ka8Okbm5hbmRlIGF2IEZBUS1hcnRpa2xhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnU8O2ayBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1Zpc2EgRkFRLWFydGlrZWwgbWVkIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Zpc2EgRkFRIHPDtmt2w6RnIGphL25lai4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ0zDtnNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa3VuZGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChhZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdPbmdlemEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdNYW5lbm8gbWFrdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWhlbXUgaW5haGl0YWppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdJZGhpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnU2VoZW11IHlhIG1lbmVqaW1lbnRpIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnT25nZXphIHNlaGVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdGdXRhIHNlaGVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ1Nhd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnT25nZXphIHNlaGVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnSGFyaXJpIHNlaGVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ0tpamlzZWhlbXUgY2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVGFmYWRoYWxpIGNoYWd1YSBqYXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdNYWt1bmRpIHlhIHdha2FsYSB5ZW55ZSBydWh1c2Ega3dhIGhpaSBtYWthbGEga2F0aWthIGthdGVnb3JpIGhpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0l0YW9ueWVzaHdhIGthbWEgdGFta28ga3dlbnllIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnSmUgdW5hdGFrYSBrdWZ1dGEgaGlpIHNlaGVtdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdIdXdlemkga3VmdXRhIHNlaGVtdSBoaWkuSW1ldHVtaWthIG5hIG1ha2FsYSB5YSBtYXN3YWxpIHNpIGNoaW5pIHlhIG1vamEgbmEvYXUgaXBvIG5kYW5pIHlhIGthdGVnb3JpIG55aW5naW5lIHNpIGNoaW5pIHlhIG1vamEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0hpaSBzZWhlbXUgaW5hdHVtaWthIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpZnVhdGF5by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnSGlpIG5pIHNlaGVtdSBtYW1hIHlhIHZpamlzZWhlbXUgdmlmdWF0YXZ5byAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnSmUgdW5hdGFrYSBLdWZ1dGEgaGlpIG1ha2FsYSB5YSBtYXN3YWxpPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdNYXN3YWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdLaWNodW5ndXphamkgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdUYWZ1dGEgaGFyYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZCBoYXppcnVodXNpd2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnVGFmdXRhIHphaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdLaWppa2lzZWhlbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnTWFrYWxhIHlhIE1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdIYWt1bmEgdmlqaXNlaGVtdSB2aWxpdnlvcGF0aWthbmEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpYSB5YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEYXRhIHphIGphcmlkYSBsYSBtYXN3YWxpIGhhemlqYXBhdGlrYW5hLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNZW5lamltZW50aSB5YSBsdWdoYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdPbmdlemEgbHVnaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnRnV0YSBMdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdPbmdlemEgTHVnaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0hhcmlyaSBMdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnSmUgdW5hdGFrYSBrdWZ1dGEgaGlpIGx1Z2hhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdIdXdlemkga3VmdXRhIGx1Z2hhIGhpaS4gSW1ldHVtaWthIGt3ZW55ZSBtYWthbGEgeWEgbWFzd2FsaSB6YWlkaSB5YSBtb2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0hpaSBsdWdoYSBpbWV0dW1pa2Ega2F0aWthIG1ha2FsYSB5YSh6YSkgbWFzd2FsaSBpZnVhdGF5by4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdNaXBhbmdpbGlvIHlhIG11a3RhZGhhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIGt3YSB1a3VyYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0hha3VuYSBkYXRhIHphIG1hc3dhbGknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnTmVubyBrdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ0t1cmEgKG1mYW5vLiBzYXdhIG5hIDEwIGF1IFphaWRpIHlhIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdLaXdhbmdvIChtZmFubyBTYXdhIG5hIDI1JSBhdSBaYWlkaSB5YSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnS3VpZGhpbmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTWFyYSB5YSBtd2lzaG8gaW1lYmFkaWxpc2h3YSBuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEgbWFrYWxhIHlhIG1hc3dhbGkgKGthYmxhL2JhYWRhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdNdWRhIHdhIGt1dGVuZ2VuZXphIE1ha2FsYSB5YSBtYXN3YWxpIChrYXRpa2F0aSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdNdWRhIHdhIGt1YmFkaWxpc2hhIG1ha2FsYSB5YSBtYXN3YWxpIChrYWJsYS9iYWFkYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnTXVkYSB3YSBrdWJhZGlsaXNoYSBtYWthbGEgeWEgbWFzd2FsaSAoa2F0aWthdGkpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ05ha2FsYSBuemltYSB5YSBtYXN3YWxpIHlhbmF5byB1bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdUYWZ1dGEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ0NoYWd1byBsYSBtYWVsZXpvIG1hZnVwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnS3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnSGFrdW5hIE1pcGFuZ2lsaW8geWEga3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ0t1cmEgbWFhbHVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdNYWZhbm8gU2F3YSBuYSAxMCBhdSBaYWlkaSB5YSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnS2l3YW5nbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnSGFrdW5hIG1pcGFuZ2lsaW8geWEga2l3YW5nbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnS2l3YW5nbyBtYWFsdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdNZmFubyBTYXdhIG5hIDI1JSBhdSBaYWlkaSB5YSA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdNdWRhIHdhIGt1dGVuZ2VuZXphIG1ha2FsYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnTXVkYSB3YSBrdWJhZGlsaSBtYWthbGEgeWEgbWFzd2FsaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdIYWJhcmkgemEgTWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdUaGFtaW5pc2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnS2F0aSB5YSA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnS3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdIYWt1bmEgS3VyYSB6aWxpem9wYXRpa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0hha3VuYSBrdXJhLiBLdXdhIHdhIGt3YW56YSBrdXRoYW1pbmlzaGEgbWFrYWxhIGhpaSB5YSBtYXN3YWxpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRG93bmxvYWQgS2lhbWJhdGFuaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdOaSBrd2Ega2lhc2kgZ2FuIG1ha2FsYSBoaWkgaW1lc2FpZGlhPyBUYWZhZGhhbGkgdHVzYWlkaWUga3V0aGFtaW5pc2hhIGt1bGV0YSBtYWJhZGlsaWtvIGthdGlrYSBkYXRhYmFzZSB5YSBNYXN3YWxpLiBBc2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdIYWluYSBNc2FhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnSW5hIG1zYWFkYSBzYW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdPbmdlemEga2ljaHdhIGNoYSBoYWJhcmkgY2hhIG1hc3dhbGkga2F0aWthIHNvbW8geWEgbWFrYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luZ2l6YSBtYXRpbmkgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbmdpemEgbWFzd2FsaSB5b3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luZ2l6YSBsaW5rIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luZ2l6YSBuYWthbGEgeWEgbWFzd2FsaSBuYSBMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdJbmdpemEgbWFzd2FsaSB5b3RlIG5hIGxpbmsnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdIYWt1bmEgbWFrYWxhIHlhIG1hc3dhbGkgaWxpeW9wYXRpa2FuYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1RhZnV0YSBuYWthbGEga2FtaWxpIGthdGlrYSBtYXN3YWxpIHlhbmF5b291bGl6d2EgbWFyYSBrd2EgbWFyYSAobWZhbm8gIkpvaG4iIGF1ICJXaWxsIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdWaXp1aXppIHZ5YSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdNYWthbGEgeWEgbWFzd2FsaSB5ZW55ZSBrdXJhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZpenVpemkgdnlhIHRoYW1hbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgeWFsaXlvdGhhbWluaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3RlbmdlbmV6d2EgdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgeWFsaXRlbmdlbmV6d2Ega2F0aSB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdUYWZ1dGEgbWFlbGV6byBtYWZ1cGkga2FtYSBraWVsZXpvJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTmFtYmEgeWEgbWFrYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnVGFmdXRhIE1ha2FsYSBrd2EgbmVubyBrdXUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnVW1tYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFjayB0byBGQVEgbWNodW5ndXppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnc2VoZW11IGl3ZSBuYSBqaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdIaWkgc2VoZW11IHRheWFyaSBpcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvYmFkaWxpc2h3YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvb25nZXp3YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0phcmlkYSBsYSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ppbmEgbGluYWhpdGFqaWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0x1Z2hhIGlwbyB0YXlhcmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpIGltZWJhZGlsaXNod2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpICBpbWVvbmdlendhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdNYWJhZGlsaWtvIHlhIG13aXNobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdpZGFkaSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnQXNhbnRlIGt3YSBLdXJhIHlha28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVW1lc2hhcGlnYSBrdXJhIHRheWFyaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdIYWt1bmEgY2hhZ3VvIGxhIGtpd2FuZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0NoYXBpc2hhIG1ha2FsYSB5YSBtYXN3YWxpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgKE1weWEgaWxpeW90ZW5nZW5lendhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgKElsaXlvYmFkaWxpc2h3YSBoaXZpIGthcmlidW5pKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdNYWthbGEgeWEgbWFzd2FsaSAoMTAgYm9yYSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ01ha2FsYSBtcHlhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTWFyZWtlYmlzaG8gbWFweWEgeWEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ01ha2FsYSAxMCBib3JhIHlhIE1hc3dhbGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICduZGFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ25qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICd1bW1hJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnS2ljaHVqaW8gY2hhIG1hdG9rZW8geWEgSFRNTCBpbGkga3VvbmdlemEgdml1bmdvIGt3YSB0dW5nbyB6aWxpem8gZmFmYW51bGl3YS4gU3VyYSB5YSBlbGVtbnRpIGhpaSBpbmFydWh1c3UgbWFpbmdpem8geWEgYWluYSBtYmlsaS4gS3dhbnphIGppbmFsYSBzdXJhIChtZi4gZmFxLnBuZykuIEt3YSBrZXNpIGhpaSBzdXJhIHlhIG5qaWEgeWEgT1RSUyBpdGF0dW1pa2EuIE5qaWEgeWEgcGlsaSBuaSBrdWluZ2l6YSBraXVuZ28gY2hhIGhpeW8gc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnUmFuZ2kgeWEgQ1NTIGt3YSBtYXRva2VvIHlhIGt1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ011ZGEgd2EgbWFzd2FsaSB5YWxpeXlvdWxpendhIG1hcmEgbXlpbmdpIGt1ZnV0aWthIGt1dG9rYSBrd2VueWUga3VtYnVrdW1idSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVXNpbWFtaXppIHdhIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ013b25nbyB3YSBtYXRva2VvIHlhIGt1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0ppbmEgbGEgY2hhZ3VvLW1zaW5naSBsYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnQ2hhZ3VvLW1zaW5naSBsYSBsdWdoYSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBueWluZ2kga2F0aWthIGx1Z2hhIG1vamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1VrdWJ3YSB3YSB1cGVvIHdhIGp1dSBjaGFndW8gbXNpbmdpIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3Vvbnllc2h3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnS2lwYXVtYmVsZSBjaGEgY2hhZ3VvLW1zaW5naSBjaGEgdGlrZXRpIGt3YSBpZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0hhbGkgeWEgY2hhZ3VvLW1zaW5naSB5YSBpbmdpem8gbGEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0hhbGkgeWEgY2hhZ3VvLW1zaW5naSBrd2EgdGlrZXRpIHphIGlkaGluaSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnSGFsaSB5YSBjaGFndW8tbXNpbmdpIGt3YSB0aWtldGkgemEgbWFrYWxhIHlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdUaGFtYW5pIHlhIGNoYWd1by1tc2luZ2kga3dhIHBhdGFtZXRhIGFtaWxpZnUga3dhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRWxlemEga2FtYSBraWNod2EgY2hhIGhhYmFyaSBjaGEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYW55aW5naSBraXVuZ2FuaXNod2UgbmEgc29tbyBsYSBtYWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdJbmFlbGV6YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgIG11b25la2FubyBtZG9nbyB3YSBqYXJpZGEgbGEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnSW5hZWxlemEgbWFwaXRpbyB5YSBtb2R1bGkga3Vvbnllc2hhIG11b25la2FubyBtZG9nbyB3YSBvcm9kaGEgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgdGFmdXRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB0YWZ1dGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHRhZnV0aSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtcGFuZ2lsaW8gd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWF0b2tlbyB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiB5YSBzYXNhaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbXBhbmdpbGlvIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hdG9rZW8geWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiB5YSBzYXNhaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1wYW5naWxpbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXRva2VvIHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB1bW1hLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiB5YSBzYXNhaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1wYW5naWxpbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXRva2VvIHlhIGt1dGFmdXRhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogeWEgc2FzYWhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtcGFuZ2lsaW8gd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWF0b2tlbyB5YSBrdXRhZnV0YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogeWEgc2FzYWhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBtYWppYnUgeWEgdXRhZnV0YWppIGthdGlrYSBpbnRhZmFzZSB5YSB1bW1hLiBKdXU6IEtvbmd3ZSB6YWlkaSBqdXUuIENoaW5pOiBZYSBzYXNhIGhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnSW5hZmFmYW5hIHNpZmEgeWEgdXRhZnV0YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHNrcmluaSB5YSB1dGFmdXRhamkgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnRmFmYW51YSB0YWFyaWZhIGl0YWtheW9pbmdpendhIGt3ZW55ZSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBtaXNpbmdpIHlhIHRpa2V0aS4gIk1hc3dhbGkgeWFsaXlvamFhIG5heWF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIiB5YW5heW9qdW11aXNoYSBuYWthbGEsIHZpYW1iYXRhbmlzaGkgbmEgdGFzd2FpcmEgeWEgbXN0YXJpIHdhIG5kYW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRmFmYW51YSBzYWZ1IHppbGl6b29ueWVzaHdhIGthdGlrYSBraXRhZnV0YSBtYXN3YWxpLiBIaWxpIGNoYWd1byBoYWxpbmEgbWFkaGFyYSBrYXRpa2EgbmFmYXNpIGt3ZW55ZSBzYWZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0ZhZmFudWEgc2FmdSB6aWxpem9vbnllc2h3YSBrYXRpa2EgamFyaWRhIGxhIG1hc3dhbGkuIEhpbGkgY2hhZ3VvIGhhbGluYSBtYWRoYXJhIGthdGlrYSBuYWZhc2kga3dlbnllIHNhZnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdGYWZhbnVhIHNhZnUgemlsaXpvb255ZXNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpLiBIaWxpIGNoYWd1byBoYWxpbmEgbWFkaGFyYSBrYXRpa2EgbmFmYXNpIGt3ZW55ZSBzYWZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdVZmFmYW51emkgd2EgdWdhIHlhIG1hdGluaSBodXJ1IHlhIGtpcGVuZ2VsZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnRnV0YSBoYXlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdW9uZ2V6YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiBNaXBhbmdvIGluYXlvd2V6ZWthbmE6IDA9IExlbWF6d2EsIDEgPSB3ZXplc2hhLCAyID0gd2V6ZXNoYSBhbmQgdGFraXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdWhhcmlyaSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLk1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEsIDIgPSB3ZXplc2hhIGFuZCB0YWtpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBtYXBpdGlvIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIE1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEsIDIgPSB3ZXplc2hhIGFuZCB0YWtpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnVWdhIHdlbnllIHV3ZXpvIGltZW9ueWVzaHdhIGthdGlrYSBza3JpbmkgeWEgbWFwaXRpbyB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4gTWlwYW5nbyBpbmF5b3dlemVrYW5hOiAwPSBMZW1hendhLCAxID0gd2V6ZXNoYSwgMiA9IHdlemVzaGEgYW5kIHRha2l3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdWNoYXBpc2hhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIE1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnVWdhIHdlbnllIHV3ZXpvIGltZW9ueWVzaHdhIGthdGlrYSBza3JpbmkgeWEgbWFwaXRpbyB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIE1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ1VnYSB3ZW55ZSB1d2V6byBpbWVvbnllc2h3YSBrYXRpa2Egc2tyaW5pIHlhIG1hcGl0aW8geWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuIE1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdXRhZnV0YSAgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gTWlwYW5nbyBpbmF5b3dlemVrYW5hOiAwPSBMZW1hendhLCAxID0gd2V6ZXNoYSwgMiA9IHdlemVzaGEgYW5kIGlsaXZ5b29ueWVzaHdhIG5hIGNoYWd1by1tc2luZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdXRhZnV0YSAgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLiBNaXBhbmdvIGluYXlvd2V6ZWthbmE6IDA9IExlbWF6d2EsIDEgPSB3ZXplc2hhLCAyID0gd2V6ZXNoYSBhbmQgaWxpdnlvb255ZXNod2EgbmEgY2hhZ3VvLW1zaW5naS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBrdXRhZnV0YSAgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuIE1pcGFuZ28gaW5heW93ZXpla2FuYTogMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEsIDIgPSB3ZXplc2hhIGFuZCBpbGl2eW9vbnllc2h3YSBuYSBjaGFndW8tbXNpbmdpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSB5YSBtYXVtYml6byBtYWRvZ28geWEgbWFwaXRpbyB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiAwPSBMZW1hendhLCAxID0gd2V6ZXNoYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ1VnYSB3ZW55ZSB1d2V6byBpbWVvbnllc2h3YSBrYXRpa2Egc2tyaW5pIGlsaWt1endhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIDA9IExlbWF6d2EsIDEgPSB3ZXplc2hhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnVWdhIHdlbnllIHV3ZXpvIGltZW9ueWVzaHdhIGthdGlrYSBza3JpbmkgaWxpa3V6d2EgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLiAwPSBMZW1hendhLCAxID0gd2V6ZXNoYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICdVZ2Egd2VueWUgdXdlem8gaW1lb255ZXNod2Ega2F0aWthIHNrcmluaSBpbGlrdXp3YSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4gMD0gTGVtYXp3YSwgMSA9IHdlemVzaGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdIYXJpcmkgbWFrYWxhIGhpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnV2V6ZXNoYSBMdWdoYSBueWluZ2kgbnlpbmdpIGthdGlrYSBtYXN3YWxpIGhheWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1dlemVzaGEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnS2ljaHVuZ3V6YWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcgS2lrb21vICJraWRvZ28iIGNoYSBtYXBpdGlvIHlhIGphcmlkYSBsYSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnS2lrb21vICJraWRvZ28iIGNoYSBtYXBpdGlvIHlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnVXBlbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSB1a3VyYXNhIGt3YSBtYXBpdGlvIHlhIGphcmlkYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLiBcJ1wnTmRvZ29cJ1wnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAnVXBlbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSB1a3VyYXNhIGt3YSBtYXBpdGlvICB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLiBcJ1wnTmRvZ29cJ1wnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB0YWZ1dGEgYmFja2VuZCBydXRhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdTZWhlbXU0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ1NlaGVtdTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnTWFrdW5kaSB5YSBpZGhpbmkga3dhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSB5YSBtYXN3YWxpIGhheWEgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdKdW11aXNoYSBzZWhlbXUgemEgbmRhbmkgemEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrdWxpbmdhbmEgbmEgdGlrZXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0p1bXVpc2hhIGppbmEgbGEga2lsYSBzZWhlbXUgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBueWluZ2kga3VsaW5nYW5hIG5hIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdLaW9sZXN1cmEgYW1iYWNobyB1dGFmdXRhamkgd2EgaGFyYWthIHVuYXRha2l3YSBrdW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSmFyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNZW5lamltZW50aSB5YSBsdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdVbmdhbmlzaGdhIGtpdHUga2luZ2luZSBuYSBraXBlbmdlbGUgaGlraSBjaGEgIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT3JvZGhhIHlhIGFpbmEgeWEgaGFsaSBhbWJhem8gemluYXdlemEga3V0dW1pa2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPcm9kaGEgeWEgYWluYSB5YSBoYWxpIGFtYmF6byB6aW5hd2V6YSBrdXR1bWlrYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09yb2RoYSB5YSBhaW5hIHlhIGhhbGkgYW1iYXpvIHppbmF3ZXphIGt1dHVtaWthIGthdGlrYSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthICBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSB1Y2h1bmd1emkgIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEgdWNodW5ndXppICB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIHVjaHVuZ3V6aSAgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIGtpdmluamFyaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2Ega2l2aW5qYXJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSBraXZpbmphcmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2EgdXRhZnV0YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSB1dGFmdXRhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSAga2F0aWthIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSB1dGFmdXRhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2EgamFyaWRhIGxhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGkgeWEga3V6YWxpc2hhIG1hZWxlem8gbWFmdXBpIHlhIHV0YWZ1dGFqaSB3YSB3YXppIHdhIEhUTUwga3dhIHV0YWZ1dGFqaSBtZnVwaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHVtbWEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlJ30gPSAnTWFrYWxhIG1weWEgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdNYWthbGEgbXB5YSB5YSBtYXN3YWxpIHlhbmFoaXRhamkgaWRoaW5pc2hvIGthYmxhIGhheWF0b2xld2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhdGFrYXlvb255ZXNod2Ega2F0aWthIGtpdGFmdXRhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhdGFrYXlvb255ZXNod2Ega2F0aWthIGtpdGFmdXRhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YXRha2F5b29ueWVzaHdhIGthdGlrYSBraWxhIHVrdXJhc2Egd2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhdGFrYXlvb255ZXNod2Ega2F0aWthIGtpbGEgdWt1cmFzYSB3YSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTmFtYmEgeWEgdml0dSB2aWxpdm9vbnl3ZXNod2Ega2F0aWthIG1hYmFkaWxpa28geWEgbXdpc2hvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ05hbWJhIHlhIHZpdHUgdmlsaXZvdGVuZ2VuZXp3YSBtd2lzaG9uaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOYW1iYSB5YSB2aXR1IHZpbGl2b29ueXdlc2h3YSBrYXRpa2EgdmlwZW5nZWxlIDEwIGJvcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRhIHphIGt1cmFzYSAoYW1iYXpvIHZpcGVuZ2VlIHZ5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHppbWVvbnllc2h3YSkgemEgbWFwaXRpbyBtYWRvZ28geWEgamFyaWRhIGxhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0YSB6YSBrdXJhc2EgKGFtYmF6byB2aXBlbmdlZSB2eWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB6aW1lb255ZXNod2EpIHphIG1hcGl0aW8gbWFkb2dvIHlhICBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0NoYXBpc2hhIG1hc3dhbGkgaGF5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRm9sZW5pIHlhIGlkaGluaSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBha3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnVGhhbWluaXNobyBsYSBrdXJhLiBGdW5ndW8gbGF6aW1hIGl3ZSBrd2VueWUgYXNpbGltaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1RhZnV0YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0aSB1cmVmdSB3YSBjaGFndW8tbXNpbmdpIChrYXRpa2EgcGlrc2VsaSkgeWEgbmRhbmkgeWEgbXN0YXJpIHdhIHVnbyB3YSBIVE1MIGthdGlrYSB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldGkgdXJlZnUgd2EgY2hhZ3VvLW1zaW5naSAoa2F0aWthIHBpa3NlbGkpIHlhIG5kYW5pIHlhIG1zdGFyaSB3YSB1Z28gd2EgSFRNTCBrYXRpa2EgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIG10ZWphLihuYSB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmF5YSB1bW1hICknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0aSB1cGVvIHdhIGp1dSB3YSB1cmVmdSAoa2F0aWthIHBpa3NlbGkpIHlhIG5kYW5pIHlhIG1zdGFyaSB3YSB1Z28gd2EgSFRNTCBrYXRpa2EgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdTZXRpIHVwZW8gd2EganV1IHdhIHVyZWZ1IChrYXRpa2EgcGlrc2VsaSkgeWEgbmRhbmkgeWEgbXN0YXJpIHdhIHVnbyB3YSBIVE1MIGthdGlrYSB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgbXRlamEuKGFuZCB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgdW1tYSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXR1ZmUgY2hhIFwnXCcgSW5naXphIGtpdW5nYW5pc2hpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhXCdcJyBrYXRpa2Egd2FrYWxhIGZpZml6YSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdHVmZSBjaGEgXCdcJ0luZ2l6YSBtYXRpbmkgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSAmIGtpdW5nYW5pc2hpXCdcJyAvIFwnXCdpbmdpemEgbWF3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlvdGUgJmtpdW5nYW5pc2hpXCdcJyBrYXRpa2Egd2FrYWxhIGZpZml6YSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXR1ZmUgY2hhIFwnXCcgSW5naXphIG1hdGluaSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhXCdcJyAvIFwnXCdJbmdpemEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5b3RlXCdcJyAga2F0aWthIHdha2FsYSAgZmlmaXphIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ09ueWVzaGEgbWFrYWxhIHlhIG1hc3dhbGkgbmEgSFRNTCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdPbnllc2hhIG5qaWEgeWEgbWFzd2FsaSBuZGlvL2hhcGFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0luYW9ueWVzaGEgdmlwZW5nZWxlIHZ5YSBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW5hb255ZXNoYSB2aXBlbmdlbGUgdmlsaXZ5b2JhZGlsaXNod2Ega2F0aWthIGtpb2xlc3VyYSBraWxpY2hvZmFmYW51bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0luYW9ueWVzaGEgdmlwZW5nZWxlIHZpbGl2eW90ZW5nZW5lendhIG13aXNob25pIGthdGlrYSBraW9sZXN1cmEgIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0luYW9ueWVzaGEgdmlwZW5nZWxlICAxMCAgYm9yYSBrYXRpa2Ega2lvbGVzdXJhIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW5hb255ZXNoYSBrdXBpZ2Ega3VyYSBrYXRpa2Ega2lvbGVzdXJhIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdhbmlzaGkga2F0aWthIG9yb2RoYSBhbWJhY2hvIGtpbmFydWh1c3Uga3V1bmdhbmlzaHdhIGt3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIG5hIGtpcGVuZ2VsZSBraW5naW5lIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSBoYXlvIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEgYW1hYmNobyBraW5hcnVodXN1IGt1ZnV0YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYW5kaGFuaSBrdXp3YSBrYXRpa2Egd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEga3VmaWtpYSBoaXN0b3JpYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSB3YWthbGEgd2Ega2lvbGVzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBrdWluZ2FuaXNoaSBrYXRpa2Egb3JvZGhhIGt1aGFyaXJpIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHdha2FsYSB3YSBraW9sZXN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEgY2hhIGt1cnVkaSBueXVtYSBrYXRpa2EgbWFuZGhhcmkga3V6d2EgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB3YWthbGEgd2Ega2lvbGVzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdhbmlzaGkga2F0aWthIG9yb2RoYSBrdWNoYXBpc2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0tpdGFtYnVsaXNoaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSwgbWZhbm8gbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSMsS0IjLCBNeUZBUSMuIENoYWd1byBtc2luZ2kgbmkgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01wYW5naWxpbyBodXUgdW5hZmFmYW51YSBrd2FtYmEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGtpbmF3ZXphIGt1dW5nYW5pc2h3YSBuYSBraXBlbmdlbGUga2luZ2luZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2Ega3V0dW1pYSBraXVuZ2FuaXNoaSBhaW5hIHlhIFwna2F3YWlkYVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01wYW5naWxpbyBodXUgdW5hZmFmYW51YSBrd2FtYmEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGtpbmF3ZXphIGt1dW5nYW5pc2h3YSBuYSBraXBlbmdlbGUga2luZ2luZSBjaGEgdGlrZXRpIGt3YSBrdXR1bWlhIGtpdW5nYW5pc2hpIGFpbmEgeWEgXCdaYXppTXRvdG9cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTXBhbmdpbGlvIGh1dSB1bmFmYWZhbnVhIGt3YW1iYSBraXBlbmdlbGUgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2luYXdlemEga3V1bmdhbmlzaHdhIG5hIGtpcGVuZ2VsZSBraW5naW5lIGNoYSB0aWtldGkga3dhIGt1dHVtaWEga2l1bmdhbmlzaGkgYWluYSB5YSBcJ2thd2FpZGFcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNcGFuZ2lsaW8gaHV1IHVuYWZhZmFudWEga3dhbWJhIGtpcGVuZ2VsZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBraW5hd2V6YSBrdXVuZ2FuaXNod2EgbmEga2lwZW5nZWxlIGtpbmdpbmUgY2hhIHRpa2V0aSBrd2Ega3V0dW1pYSBhaW5hIHlhIGtpdW5nYW5pc2hpIGtpemF6aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0tpaW5pIGNoYSB0aWtldGkga3dhIElkaGluaSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1NvbW8gbGEgdGlrZXRpIGt3YSBJZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdLaXBlbmdlbGUgY2hhIG13YW1iYWEgemFuYSBrd2EgYWppbGkgeWEgbWthdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICduamUgKG10ZWphKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnbmRhbmkgKHdha2FsYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfguYDguJ7guLTguYjguKHguJrguJfguITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn4LiV4LmJ4Lit4LiH4Lij4Liw4Lia4Li44Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn4LmA4Lie4Li04LmI4Lih4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ+C4peC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ+C5guC4reC5gOC4hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfguYDguJ7guLTguYjguKHguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+C5geC4geC5ieC5hOC4guC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4ouC5iOC4reC4ouC4guC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+C4geC4o+C4uOC4k+C4suC5gOC4peC4t+C4reC4geC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4ouC4q+C4meC4tuC5iOC4h+C4geC4peC4uOC5iOC4oeC4l+C4teC5iOC5hOC4lOC5ieC4o+C4seC4muC4reC4meC4uOC4jeC4suC4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn4LiB4Lil4Li44LmI4Lih4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmA4LiC4LmJ4Liy4LiW4Li24LiH4Lia4LiX4LiE4Lin4Liy4Lih4LmD4LiZ4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfguIjguLDguYHguKrguJTguIfguYDguJvguYfguJnguITguKfguLLguKHguITguLTguJTguYDguKvguYfguJnguYPguJlFeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4Lil4Lia4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4Lir4Lij4Li34Lit4LmE4Lih4LmIPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+C4hOC4uOC4k+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4peC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC5hOC4lOC5ieC5gOC4nuC4o+C4suC4sOC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC4luC4ueC4geC5g+C4iuC5ieC5g+C4meC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4ouC4q+C4meC4tuC5iOC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEg4Lir4Lij4Li34LitIOC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC4hOC4t+C4rSDguKvguKHguKfguJTguKvguKHguLnguYjguKvguKXguLHguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguYPguIrguYnguYPguJnguIHguLLguKPguJXguLTguJTguJXguLLguKHguJrguJfguITguKfguLLguKEgRkFRIChzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguITguLfguK3guKvguKHguKfguJTguKvguKHguLnguYjguKvguKXguLHguIHguILguK3guIfguKvguKHguKfguJTguKvguKHguLnguYjguKLguYjguK3guKLguJXguYjguK3guYTguJvguJnguLXguYknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4Lil4Lia4Lir4Lix4Lin4LiC4LmJ4LitIEZBUSDguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAn4LiZ4Lix4LiB4Liq4Liz4Lij4Lin4LiIIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfguIHguLLguKPguITguYnguJnguKvguLLguYHguJrguJrguKPguKfguJTguYDguKPguYfguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ+C5hOC4p+C4peC4lOC5jOC4geC4suC4o+C5jOC4lOC5hOC4lOC5ieC4o+C4seC4muC4reC4meC4uOC4jeC4suC4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfguIHguLLguKPguITguYnguJnguKvguLLguYHguJrguJrguKXguLDguYDguK3guLXguKLguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4ouC5iOC4reC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICfguJrguJfguITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lii4LmI4Lit4LiiJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfguJvguKPguLDguKfguLHguJXguLTguILguK3guIcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4Lin4Liy4Lij4Liq4Liy4LijIEZBUSAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn4LiB4Liy4Lij4LiI4Lix4LiU4LiB4Liy4Lij4Lig4Liy4Lip4LiyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ+C4peC4muC4oOC4suC4qeC4siAlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguKDguLLguKnguLLguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+C4hOC4uOC4k+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4peC4muC4oOC4suC4qeC4suC4meC4teC5ieC5gOC4nuC4o+C4suC4sOC4oOC4suC4qeC4suC4meC4teC5ieC4geC4s+C4peC4seC4h+C5g+C4iuC5ieC5g+C4meC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4ouC4q+C4meC4tuC5iOC4h+C5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAn4Lig4Liy4Lip4Liy4LiZ4Li14LmJ4LmD4LiK4LmJ4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUShzKSDguYDguKvguKXguYjguLLguJnguLXguYknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguYnguK3guITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguILguK3guIfguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4LiC4LmJ4Lit4Lih4Li54LilIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICfguITguLXguKLguYzguYDguKfguLTguKPguYzguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ+C5guC4q+C4p+C4lSAo4LmA4LiK4LmI4LiZIOC5gOC4l+C5iOC4suC4geC4seC4miAxMCDguKvguKPguLfguK3guKHguLLguIHguIHguKfguYjguLI2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn4LmA4Lij4LiVICjguYDguIrguYjguJkg4LmA4LiX4LmI4Liy4LiB4Lix4LiaIDI1JSDguKvguKPguLfguK0g4Lih4Liy4LiB4LiB4Lin4LmI4LiyIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICfguK3guJnguLjguKHguLHguJXguLTguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lil4LmI4Liy4Liq4Li44LiU4LmC4LiU4LiiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAo4LiB4LmI4Lit4LiZL+C4q+C4peC4seC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAo4LmD4LiZ4Lij4Liw4Lir4Lin4LmI4Liy4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC4geC5iOC4reC4mS/guKvguKXguLHguIcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5g+C4meC4o+C4sOC4q+C4p+C5iOC4suC4hyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAn4LiC4LmJ4Lit4LiE4Lin4Liy4LihRkFR4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmC4LiU4LiiIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ+C4geC4suC4o+C5gOC4peC4t+C4reC4geC5guC4m+C4o+C5hOC4n+C4peC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAn4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfguYTguKHguYjguKHguLXguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguIHguLLguKPguYLguKvguKfguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICfguIHguLLguKPguYLguKvguKfguJXguJfguLXguYjguYDguInguJ7guLLguLDguYDguIjguLLguLDguIjguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn4LmA4LiK4LmI4LiZIOC5gOC4l+C5iOC4suC4geC4seC4miAxMCDguKvguKPguLfguK3guKHguLLguIHguIHguKfguYjguLI2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn4LmA4Lij4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfguYTguKHguYjguKHguLXguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguIHguLLguKPguYDguKPguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ+C4geC4suC4o+C4m+C4o+C4sOC5gOC4oeC4tOC4meC4l+C4teC5iOC5gOC4ieC4nuC4suC4sOC5gOC4iOC4suC4sOC4iOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ+C5gOC4iuC5iOC4mSDguYDguJfguYjguLLguIHguLHguJogMjUlIOC4q+C4o+C4t+C4rSDguKHguLLguIHguIHguKfguYjguLIgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfguYDguKfguKXguLLguJfguLXguYjguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJrguJfguITguKfguLLguKEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn4LiC4LmJ4Lit4Lih4Li54LilIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfguYDguKPguJXguJXguLTguYnguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcxIOC5g+C4mSAgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+C5guC4q+C4p+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfguYTguKHguYjguJ7guJrguIHguLLguKPguYLguKvguKfguJUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfguYTguKHguYjguJ7guJrguIHguLLguKPguYLguKvguKfguJUhIOC5gOC4m+C5h+C4meC4hOC4meC5geC4o+C4geC5g+C4meC4geC4suC4o+C4m+C4o+C4sOC5gOC4oeC4tOC4meC4q+C4seC4p+C4guC5ieC4rSBGQVEg4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfguJTguLLguKfguJnguYzguYLguKvguKXguJTguKrguLTguYjguIfguJfguLXguYjguYHguJnguJrguKHguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICfguYPguJnguIHguLLguKPguYDguJvguLTguJTguIHguLLguKPguKXguLTguIfguITguYzguYPguJnguJrguKXguYfguK3guIHguITguLPguK3guJjguLTguJrguLLguKLguJXguYjguK3guYTguJvguJnguLXguYkg4LiE4Li44LiT4Lit4Liy4LiI4LiI4Liw4LiV4LmJ4Lit4LiH4LiB4LiU4Lib4Li44LmI4LihIEN0cmwg4Lir4Lij4Li34LitIENtZCDguKvguKPguLfguK0gU2hpZnQg4LmD4LiZ4LiC4LiT4Liw4LiX4Li14LmI4LiB4LiU4Lil4Li04LiH4LiE4LmMICjguILguLbguYnguJnguK3guKLguLjguYjguIHguLHguJrguYDguJrguKPguLLguYDguIvguK3guKPguYzguYHguKXguLDguKPguLDguJrguJrguJvguI7guLTguJrguLHguJXguLTguIHguLLguKPguILguK3guIfguITguLjguJMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn4Lir4Lix4Lin4LiC4LmJ4Lit4LiZ4Li14LmJ4LmE4LiU4LmJ4Lib4Lij4Liw4LmC4Lii4LiK4LiZ4LmM4LiB4Lix4Lia4LiE4Li44LiT4Lir4Lij4Li34Lit4LmE4Lih4LmIPyDguIHguKPguLjguJPguLLguYPguKvguYnguITguLDguYHguJnguJnguILguK3guIfguITguLjguJPguYHguKXguLDguIrguYjguKfguKLguYPguJnguIHguLLguKPguJvguKPguLHguJrguJvguKPguLjguIfguJDguLLguJnguILguYnguK3guKHguLnguKUgRkFRLiDguILguK3guJrguITguLjguJMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn4LmE4Lih4LmI4Lih4Li14Lib4Lij4Liw4LmC4Lii4LiK4LiZ4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ+C4oeC4teC4m+C4o+C4sOC5guC4ouC4iuC4meC5jOC4oeC4suC4gSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAn4LmA4Lie4Li04LmI4Lih4Lir4Lix4Lin4LiC4LmJ4LitIEZBUSDguYPguJnguJXguLHguKfguJrguJfguILguK3guIfguJrguJfguITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4LiE4Lin4Liy4LihIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfguJvguYnguK3guJkgRkFRIOC4ieC4muC4seC4muC5gOC4leC5h+C4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfguJvguYnguK3guJnguKXguLTguIfguITguYwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfguJvguYnguK3guJnguKXguLTguIfguITguYzguYHguKXguLDguILguYnguK3guITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICfguJvguYnguK3guJkgRkFRIOC4ieC4muC4seC4muC5gOC4leC5h+C4oeC5geC4peC4sOC4peC4tOC4h+C4hOC5jCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4muC4l+C4hOC4p+C4suC4oSBGQVEgJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4Lih4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAo4LmA4LiK4LmI4LiZICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAn4LiC4LmJ4Lit4LiI4Liz4LiB4Lix4LiU4LiB4Liy4Lij4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICfguYDguInguJ7guLLguLDguJrguJfguITguKfguLLguKFGQVEg4LmC4LiU4Lii4LiB4Liy4Lij4LmC4Lir4Lin4LiULi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAn4LiC4LmJ4Lit4LiI4Liz4LiB4Lix4LiU4LiB4Liy4Lij4Lib4Lij4Liw4LmA4Lih4Li04LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ+C5gOC4ieC4nuC4suC4sOC4muC4l+C4hOC4p+C4suC4oUZBUSDguYLguJTguKLguIHguLLguKPguJvguKPguLDguYDguKHguLTguJkuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ+C5gOC4ieC4nuC4suC4sOC4muC4l+C4hOC4p+C4suC4oSBGQVHguJfguLXguYjguKrguKPguYnguLLguIfguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn4LmA4LiJ4Lie4Liy4Liw4Lia4LiX4LiE4Lin4Liy4LihIEZBUeC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C5g+C4meC4o+C4sOC4q+C4p+C5iOC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdTZWFyY2gtUHJvZmlsZSDguYDguJvguYfguJnguYHguKHguYjguYHguJrguJo/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lia4LiX4LiE4Lin4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn4LiE4LmJ4LiZ4Lir4Liy4Lia4LiX4LiE4Lin4Liy4Lih4LiU4LmJ4Lin4Lii4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ+C4quC4suC4mOC4suC4o+C4k+C4sCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn4LiB4Lil4Lix4Lia4LmE4Lib4LiX4Li14LmIIEZBUSBFeHBsb3Jlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ+C4leC5ieC4reC4h+C4o+C4sOC4muC4uOC4iuC4t+C5iOC4reC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC4oeC4teC4reC4ouC4ueC5iOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ+C4reC4seC4m+C5gOC4lOC4leC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCBGQVEg4LmB4Lil4LmJ4LinISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn4LmA4Lie4Li04LmI4Lih4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIIEZBUSDguYHguKXguYnguKchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfguKfguLLguKPguKrguLLguKMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+C4leC5ieC4reC4h+C4o+C4sOC4muC4uOC4iuC4t+C5iOC4rSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfguKDguLLguKnguLLguJnguLXguYnguKHguLXguK3guKLguLnguYjguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfguK3guLHguJvguYDguJTguJXguKDguLLguKnguLIgRkFRIOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4siBGQVEg4LmB4Lil4LmJ4LinISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfguK3guLHguJvguYDguJTguJXguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAn4LmE4LiU4Lih4Liy4LiZ4Li04LiE4Lif4Li04Lil4LiU4LmM4LiC4Lit4LiHIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfguYTguKHguYjguKHguLXguJzguKXguKXguLHguJ7guJjguYwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICfguKvguKHguLLguKLguYDguKXguIIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn4LiC4Lit4Lia4LiE4Li44LiT4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LiC4Lit4LiH4LiE4Li44LiTISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+C4hOC4uOC4k+C5hOC4lOC5ieC4l+C4s+C4geC4suC4o+C5guC4q+C4p+C4leC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfguYTguKHguYjguKHguLXguYDguKPguJfguJfguLXguYjguJbguLnguIHguYDguKXguLfguK3guIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ+C4nuC4tOC4oeC4nuC5jOC4muC4l+C4hOC4p+C4suC4oSBGQVEgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAo4LmA4Lie4Li04LmI4LiH4Liq4Lij4LmJ4Liy4LiH4LmD4Lir4Lih4LmIKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAo4LmA4Lie4Li04LmI4LiH4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfguJrguJfguITguKfguLLguKEgRkFRICgxMCDguK3guLHguJnguJTguLHguJrguKLguK3guJTguJnguLTguKLguKEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ+C4muC4l+C4hOC4p+C4suC4oeC4meC4teC5ieC4p+C5iOC4suC4h+C5gOC4m+C4peC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4reC4seC4m+C5gOC4lOC4leC4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnMTAg4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKLguK3guJTguJnguLTguKLguKEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfguKDguLLguKLguYPguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfguKDguLLguKLguJnguK3guIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAn4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4Liq4LiU4LiH4Lic4LilIEhUTUzguYDguJ7guLfguYjguK3guYDguJ7guLTguYjguKHguIHguLLguKPguYDguIrguLfguYjguK3guKHguYLguKLguIfguJfguLXguYjguK3guKLguLnguYjguYDguJrguLfguYnguK3guIfguKvguKXguLHguIfguILguK3guIfguK3guLHguIHguILguKPguLDguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYkg4Lit4LiH4LiE4LmM4Lib4Lij4Liw4LiB4Lit4Lia4LiC4Lit4LiH4Lig4Liy4Lie4LiX4Li14LmI4LiI4Liw4LiK4LmI4Lin4Lii4LmD4Lir4LmJ4Liq4Liy4Lih4Liy4Lij4LiW4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54Lil4Liq4Lit4LiH4LiK4LiZ4Li04LiU4LmE4LiU4LmJIOC4q+C4meC4tuC5iOC4h+C4hOC4t+C4reC4iuC4t+C5iOC4reC4guC4reC4h+C4oOC4suC4niAo4LmA4LiK4LmI4LiZIGZhcS5wbmcp4LmD4LiZ4LiB4Lij4LiT4Li14LiZ4Li14LmJ4LmA4Liq4LmJ4LiZ4LiX4Liy4LiH4LiC4Lit4LiH4Lig4Liy4LieT1RSUyDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYkg4Liq4Lit4LiH4LiE4Li34Lit4LiB4Liy4Lij4LmB4LiX4Lij4LiB4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4Lii4Lix4LiH4Lig4Liy4LieJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+C4quC4tSBDU1Mg4Liq4Liz4Lir4Lij4Lix4Lia4Lic4Lil4LiB4Liy4Lij4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfguYDguKfguKXguLLguYHguITguIrguJfguLXguYjguIjguLDguJvguKXguYjguK3guKLguYPguKvguYnguKrguLPguKvguKPguLHguJrguKPguLLguKLguIHguLLguKNGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfguJXguLPguYHguKvguJnguYjguIfguJfguKjguJnguLTguKLguKHguILguK3guIfguJzguKXguIHguLLguKPguJnguLHguJrguITguLDguYHguJnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+C4iuC4t+C5iOC4reC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn4Lig4Liy4Lip4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4LiaIEZBUSDguYPguJnguYLguKvguKHguJTguKDguLLguKnguLLguYDguJTguLXguKLguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAn4LiC4LiZ4Liy4LiU4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4Liq4Li54LiH4Liq4Li44LiU4LiC4Lit4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn4Lil4Liz4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiN4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04LiC4Lit4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4geC4o+C4reC4geC4guC5ieC4reC4oeC4ueC4pSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guJXguLHguYvguKfguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguJrguJfguITguKfguLLguKEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfguJvguKPguLDguYDguKDguJfguJXguLHguYvguKfguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguJrguJfguITguKfguLLguKEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LmD4LiZ4Lir4LiZ4LmJ4Liy4Liq4Liy4LiY4Liy4Lij4LiT4LiwIOC4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4luC4ueC4geC4meC4s+C4oeC4suC5g+C4iuC5ieC5g+C4meC4quC4hOC4o+C4tOC4m+C4leC5jOC4guC4reC4h+C4o+C4sOC4muC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiW4LmJ4Liy4Lir4Liy4LiB4Lir4Lix4Lin4LiC4LmJ4LitRkFRIOC4hOC4p+C4o+C5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4leC4seC4lOC5geC4muC5iOC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC5hOC4m+C4ouC4seC4h+C4muC4l+C4hOC4p+C4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBBdmFpbGFibGUsIDIgPSBFbmFibGVkIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmC4Lih4LiU4Li54Lil4Lig4Liy4Lie4Lij4Lin4Lih4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lih4Li44Lih4Lih4Lit4LiH4LmA4Lil4LmH4LiBIOC5hiDguILguK3guIfguKfguLLguKPguKrguLLguKMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguJfguLXguYjguIjguLDguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguYDguKXguYfguIEg4LmGIOC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4mkZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4mkZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIcgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCBGQVEg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4LiaIEZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJpGQVEg4LmD4LiZIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4miAgRkFRIOC5g+C4mUZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJogIEZBUSDguYPguJlGQVEgRXhwbG9yZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLIgRkFRIEV4cGxvcmVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4siDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLIgRkFRIEV4cGxvcmVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Lil4Li54LiB4LiE4LmJ4LiyIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYjguLLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguJfguLXguYjguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4iOC4sOC5geC4l+C4o+C4geC5g+C4mUZBUSDguJXguLLguJfguJXguLHguYvguKcgIkZBUSDguInguJrguLHguJrguYDguJXguYfguKEiIOC4iOC4sOC4o+C4p+C4oeC4luC4tuC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC5geC4peC4sOC4oOC4suC4nuC4l+C4teC5iOC5geC4meC4muC4oeC4suC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJTguIrguJrguK3guKPguYzguJTguYDguJrguLfguYnguK3guIfguKvguKXguLHguIcgICLguIjguLPguIHguLHguJQiIOC4hOC4t+C4reC4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSAi4LiB4Lil4Li44LmI4LihIiDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYnguYDguJ7guLfguYjguK3guIjguLPguIHguLHguJTguIHguLLguKPguYDguILguYnguLLguJbguLbguIfguJvguKXguLHguYrguIHguK3guLTguJkgKOC5gOC4iuC5iOC4meC4geC4peC4uOC5iOC4oTog4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaOyDguIHguKXguLjguYjguKEgMTsg4LiB4Lil4Li44LmI4LihMjspICLguYDguKPguLTguYjguKHguJXguYnguJkiIOC4o+C4sOC4muC4uOC4p+C5iOC4suC4luC5ieC4suC4m+C4peC4seC5iuC4geC4reC4tOC4meC4luC4ueC4geC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4q+C4o+C4t+C4reC4q+C4suC4geC4nOC4ueC5ieC5g+C4iuC5ieC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4nuC4t+C5iOC4reC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5hOC4lOC5ieC4lOC5ieC4p+C4ouC4leC4meC5gOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIfguK3guKLguLnguYjguYPguJkgRkFRIEV4cGxvcmVyICDguIvguLbguYjguIfguJXguLHguKfguYDguKXguLfguK3guIHguJnguLXguYnguIjguLDguYTguKHguYjguKHguLXguJzguKXguJXguYjguK3guJXguLPguYHguKvguJnguYjguIfguILguK3guIfguITguK3guKXguLHguKHguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIfguK3guKLguLnguYjguYPguJnguJnguLTguJXguKLguKrguLLguKMgRkFRIOC4i+C4tuC5iOC4h+C4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4iOC4sOC5hOC4oeC5iOC4oeC4teC4nOC4peC4leC5iOC4reC4leC4s+C5geC4q+C4meC5iOC4h+C4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LiX4Li14LmI4LmB4Liq4LiU4LiH4Lit4Lii4Li54LmI4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSDguIvguLbguYjguIfguJXguLHguKfguYDguKXguLfguK3guIHguJnguLXguYnguIjguLDguYTguKHguYjguKHguLXguJzguKXguJXguYjguK3guJXguLPguYHguKvguJnguYjguIfguILguK3guIfguITguK3guKXguLHguKHguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICfguIHguLPguKvguJnguJTguKrguJbguLLguJnguJfguLXguYjguJfguLXguYjguKXguLTguIfguITguYwgXCfguYHguJfguKPguIFGQVEgXCcg4LiI4Liw4Lib4Lij4Liy4LiB4LiPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ+C4hOC4s+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4iuC5iOC4reC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn4Lil4LiaIEZBUSDguJnguLXguYkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiB4Liy4Lij4LmA4Lie4Li04LmI4LihRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDIgPSDguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYHguKXguLDguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguYPguIrguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiB4Liy4Lij4LmB4LiB4LmJ4LmE4LiCRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDIgPSDguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYHguKXguLDguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguYPguIrguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+C5hOC4lOC4meC4suC4oeC4tOC4hOC4n+C4tOC4peC4lOC5jOC5geC4quC4lOC4h+C5g+C4meC4q+C4meC5ieC4suC4uOC4oeC4uOC4oeC4oeC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4hyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMIOC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4hOC4t+C4rSAwID0g4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDEgPSDguYDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJkgMiA9IOC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5geC4peC4sOC4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C5g+C4iuC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+C5hOC4lOC4meC4suC4oeC4tOC4hOC4n+C4tOC4peC4lOC5jOC5geC4quC4lOC4h+C5g+C4meC4q+C4meC5ieC4suC4uOC4oeC4uOC4oeC4oeC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4hyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwIOC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4hOC4t+C4rSAwID0g4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDEgPSDguYDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJkgMiA9IOC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5geC4peC4sOC4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C5g+C4iuC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+C5hOC4lOC4meC4suC4oeC4tOC4hOC4n+C4tOC4peC4lOC5jOC5geC4quC4lOC4h+C5g+C4meC4q+C4meC5ieC4suC4geC4suC4o+C4nuC4tOC4oeC4nuC5jCBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMIOC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4hOC4t+C4rSAwID0g4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDEgPSDguYDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfguYTguJTguJnguLLguKHguLTguITguJ/guLTguKXguJTguYzguYHguKrguJTguIfguYPguJnguKvguJnguYnguLLguIHguLLguKPguJ7guLTguKHguJ7guYwgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4siDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+C5hOC4lOC4meC4suC4oeC4tOC4hOC4n+C4tOC4peC4lOC5jOC5geC4quC4lOC4h+C5g+C4meC4q+C4meC5ieC4suC4geC4suC4o+C4nuC4tOC4oeC4nuC5jCBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4Liw4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LmE4Lib4LmE4LiU4LmJ4LiE4Li34LitIDAgPSDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJkgMSA9IOC5gOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDIgPSDguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYHguKXguLDguYHguKrguJTguIfguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+C5hOC4lOC4meC4suC4oeC4tOC4hOC4n+C4tOC4peC4lOC5jOC5geC4quC4lOC4h+C5g+C4meC4q+C4meC5ieC4suC4geC4suC4o+C4hOC5ieC4meC4q+C4skZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLIg4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LmE4Lib4LmE4LiU4LmJ4LiE4Li34LitIDAgPSDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJkgMSA9IOC5gOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAyID0g4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmB4Lil4Liw4LmB4Liq4LiU4LiH4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDIgPSDguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYHguKXguLDguYHguKrguJTguIfguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4Lih4Li44Lih4Lih4Lit4LiH4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiHIEZBUSDguILguJnguLLguJTguYDguKXguYfguIHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwg4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LmE4Lib4LmE4LiU4LmJ4LiE4Li34LitIDAgPSDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJkgMSA9IOC5gOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn4LmE4LiU4LiZ4Liy4Lih4Li04LiE4Lif4Li04Lil4LiU4LmM4LmB4Liq4LiU4LiH4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiB4Liy4Lij4LiL4Li54LihRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJfguLXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYnguITguLfguK0gMCA9IOC4m+C4tOC4lOC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSAxID0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfguYTguJTguJnguLLguKHguLTguITguJ/guLTguKXguJTguYzguYHguKrguJTguIfguYPguJnguKvguJnguYnguLLguIHguLLguKPguIvguLnguKFGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyIOC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4hOC4t+C4rSAwID0g4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDEgPSDguYDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfguYTguJTguJnguLLguKHguLTguITguJ/guLTguKXguJTguYzguYHguKrguJTguIfguYPguJnguKvguJnguYnguLLguIHguLLguKPguIvguLnguKEgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sOC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5ieC4hOC4t+C4rSAwID0g4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZIDEgPSDguYDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ+C5geC4geC5ieC5hOC4giBGQVEg4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguKvguKXguLLguIHguKvguKXguLLguKLguKDguLLguKnguLIg4LmD4LiZ4LmC4Lih4LiU4Li54LilIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Lil4LmE4LiB4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LmD4LiZ4LmC4Lih4LiU4Li54LilRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ+C4meC4seC4geC4quC4s+C4o+C4p+C4iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiH4Lin4Liy4Lij4Liq4Liy4LijRkFRIuC4guC4meC4suC4lOC5gOC4peC5h+C4gSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfguKDguLLguJ7guKPguKfguKHguILguK3guIdGQVEi4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ+C4iOC4s+C4meC4p+C4mSBGQVEg4LiX4Li14LmI4LiI4Liz4LiB4Lix4LiU4LmD4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4Liq4Liz4Lir4Lij4Lix4Lia4Lig4Liy4Lie4Lij4Lin4Lih4Lin4Liy4Lij4Liq4Liy4LijIEZBUSAi4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBPdmVydmlldyAiU21hbGwiJ30gPSAn4LiI4Liz4LiB4Lix4LiUIEZBUSDguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguKDguLLguJ7guKPguKfguKEgRkFRICLguILguJnguLLguJTguYDguKXguYfguIEiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdiYWNrZW5kIHJvdXRlciDguITguYnguJnguKvguLIgRkFRIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICfguJ/guLTguKXguJTguYw0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ+C4n+C4tOC4peC4lOC5jDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+C4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBGQVEg4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfguKPguKfguKHguYDguILguJXguILguYnguK3guKHguLnguKXguKDguLLguKLguYPguJnguYDguIHguLXguYjguKLguKfguIHguLHguJpGQVEg4LiV4Liy4Lih4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn4Lij4Lin4Lih4LiW4Li24LiH4LiK4Li34LmI4Lit4LiC4Lit4LiH4LmB4LiV4LmI4Lil4Liw4LmA4LiC4LiV4LiC4LmJ4Lit4Lih4Li54Lil4Lig4Liy4Lii4LmD4LiZRkFRIOC4leC4suC4oeC4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5geC4muC4muC4o+C4p+C4lOC5gOC4o+C5h+C4p+C4hOC4p+C4o+C4iOC4sOC5geC4quC4lOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn4Lin4Liy4Lij4Liq4Liy4LijJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfguIHguLLguKPguIjguLHguJTguIHguLLguKPguKDguLLguKnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn4Lil4Li04LiH4LiE4LmM4Lit4Lit4Lia4LmA4LiI4LiB4LiV4LmM4Lit4Li34LmI4LiZ4LmE4Lib4Lii4Lix4LiHIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4LmI4Liy4LiH4LmG4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4o+C4suC4ouC4iuC4t+C5iOC4reC4guC4reC4h+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4leC5iOC4suC4h+C5huC4l+C4teC5iOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4suC5hOC4lOC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4LmI4Liy4LiH4LmG4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4Liw4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRICBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLXguYjguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lin4Liy4Lij4Liq4Liy4LijIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIcgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIcgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lin4Liy4Lij4Liq4Liy4LijIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmC4Lih4LiU4Li54Lil4LmD4LiZ4LiB4Liy4Lij4Liq4Lij4LmJ4Liy4LiH4LmC4Lib4Lij4LmE4Lif4Lil4LmMIE9wZW5TZWFyY2ggaHRtbCDguKrguLPguKvguKPguLHguJrguIHguLLguKPguITguYnguJnguKvguLIgRkFRIOC5geC4muC4muC4geC4o+C4sOC4iuC4seC4miDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLXguYjguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ+C4q+C4seC4p+C4guC5ieC4rSBGQVEg4LmD4Lir4Lih4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+C4muC4l+C4hOC4p+C4suC4oUZBUSDguYPguKvguKHguYjguJXguYnguK3guIfguJfguLXguYjguYTguJTguYnguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguIHguYjguK3guJnguYTguJTguYnguKPguLHguJrguIHguLLguKPguJXguLXguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4muC4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4suC4guC4reC4h+C4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfguIjguLPguJnguKfguJkgaXRlbXMg4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmD4LiZ4LiK4LmI4Lin4LiH4LiX4Li14LmI4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4LiE4Lij4Lix4LmJ4LiH4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn4LiI4Liz4LiZ4Lin4LiZIGl0ZW1zIOC4l+C4teC5iOC5geC4quC4lOC4h+C5g+C4meC4iuC5iOC4p+C4h+C4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4guC4tuC5ieC4meC4hOC4o+C4seC5ieC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C4n+C4teC5gOC4iOC4reC4o+C5jOC5g+C4mSAxMCDguK3guLHguJnguJTguLHguJrguYHguKPguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LmD4LiZ4Lij4Liy4Lii4LiB4Liy4LijICjguIvguLbguYjguIfguIjguLDguYHguKrguJTguIfguKPguLLguKLguIHguLLguKMgRkFRICkg4LiC4Lit4LiH4Lin4Liy4Lij4Liq4Liy4LijIEZBUSDguILguJnguLLguJTguYDguKXguYfguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC5g+C4meC4o+C4suC4ouC4geC4suC4oyAgKOC4i+C4tuC5iOC4h+C4iOC4sOC5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEpIOC4guC4reC4hyDguKDguLLguJ7guKPguKfguKEgRkFR4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn4Lie4Li04Lih4Lie4LmMIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4LiE4Li04Lin4LmD4LiZ4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+C5gOC4o+C4leC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5guC4q+C4p+C4leC4leC5ieC4reC4h+C4geC4s+C4q+C4meC4lOC5gOC4m+C5h+C4meC4o+C5ieC4reC4ouC4peC4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfguITguYnguJnguKvguLIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn4LmA4LiL4LiV4LiE4LmI4Liy4LiE4Lin4Liy4Lih4Liq4Li54LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZKOC4nuC4tOC4geC5gOC4i+C4pSkg4LiC4Lit4LiH4Lif4Li04Lil4LiU4LmMSFRNTCDguYHguJrguJrguK3guLTguJnguYTguKXguJnguYzguYPguJkgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4hOC5iOC4suC4hOC4p+C4suC4oeC4quC4ueC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSjguJ7guLTguIHguYDguIvguKUpIOC4guC4reC4h+C4n+C4tOC4peC4lOC5jEhUTUwg4LmB4Lia4Lia4Lit4Li04LiZ4LmE4Lil4LiZ4LmM4LmD4LiZQ3VzdG9tZXJGQVFab29tICAo4LmB4Lil4LiwIFB1YmxpY0ZBUVpvb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4hOC5iOC4suC4hOC4p+C4suC4oeC4quC4ueC4h+C4quC4ueC4h+C4quC4uOC4lCjguJ7guLTguIHguYDguIvguKUpIOC4guC4reC4h+C4n+C4tOC4peC4lOC5jEhUTUwg4LmB4Lia4Lia4Lit4Li04LiZ4LmE4Lil4LiZ4LmM4LmD4LiZIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfguYDguIvguJXguITguYjguLLguITguKfguLLguKHguKrguLnguIfguKrguLnguIfguKrguLjguJQo4Lie4Li04LiB4LmA4LiL4LilKSDguILguK3guIfguJ/guLTguKXguJTguYxIVE1MIOC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jOC5g+C4mUN1c3RvbWVyRkFRWm9vbSAo4LmB4Lil4LiwIFB1YmxpY0ZBUVpvb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Li44LmI4LihICLguYHguJfguKPguIHguKXguLTguIfguITguYwgRkFRICIg4LmD4LiZIEFnZW50RkFRWm9vbVNtYWxsIOC4quC4s+C4q+C4o+C4seC4muC4muC4l+C4hOC4p+C4suC4oUZBUSDguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Li44LmI4LihICLguYHguJfguKPguIHguILguYnguK3guITguKfguLLguKEgRkFR4LmB4Lil4Liw4Lil4Li04LiH4LiE4LmMICIg4LmD4LiZIEFnZW50RkFRWm9vbVNtYWxsIOC4quC4s+C4q+C4o+C4seC4muC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJvguLjguYjguKEgIuC5geC4l+C4o+C4geC4guC5ieC4reC4hOC4p+C4suC4oSBGQVEgIiDguYPguJkgQWdlbnRGQVFab29tU21hbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAn4LmB4Liq4LiU4LiH4Lia4LiX4LiE4Lin4Liy4LihRkFRIOC4lOC5ieC4p+C4oiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfguYHguKrguJTguIcg4LmD4LiK4LmILyDguYTguKHguYjguYPguIrguYgg4Lie4Liy4LiYRkFRICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiC4Lit4LiH4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lii4LmI4Lit4LiiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4l+C4teC5iOC4nOC5iOC4suC4meC4oeC4suC4peC5iOC4suC4quC4uOC4lOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4Lil4LmI4Liy4Liq4Li44LiU4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+C5geC4quC4lOC4hzEwIOC4o+C4suC4ouC4geC4suC4o+C4ouC4reC4lOC4meC4tOC4ouC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn4LmB4Liq4LiU4LiH4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lil4Li04LiH4LiE4LmMIEZBUSDguIHguLHguJrguK3guK3guJrguYDguIjguIHguITguYzguK3guLfguYjguJnguYPguJnguIHguLLguKPguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guK3guJnguLjguI3guLLguJXguIHguLLguKPguKXguJogRkFR4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LmA4LiC4LmJ4Liy4LiU4Li54Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIEZBUSDguYPguJnguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4giBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guKLguYnguK3guJnguIHguKXguLHguJogRkFRIOC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4nuC4tOC4oeC4nuC5jCBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn4Lin4Li04LiY4Li14LmB4LiB4LmJ4Lib4Lix4LiN4Lir4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfguYDguITguKPguLfguYjguK3guIfguYHguKrguJTguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICfguJXguLHguKfguJrguYjguIfguIrguLXguYnguKrguLPguKvguKPguLHguJogRkFRLCDguYDguIrguYjguJkgRkFRIywgIEtCIywgTXlGQVEgIy4g4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiE4Li34LitIEZBUSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ0ZBUVwnIOC4quC4suC4oeC4suC4o+C4luC4peC4tOC4h+C4hOC5jOC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jCAgXCdGQVFcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMICBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Lit4Li34LmI4LiZIOC5guC4lOC4ouC4geC4suC4o+C5g+C4iuC5ieC4peC4tOC4h+C4hOC5jCBcJ1BhcmVudENoaWxkXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ0ZBUVwnIOC4quC4suC4oeC4suC4o+C4luC4peC4tOC4h+C4hOC5jOC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jCAgXCfguJXguLHguYvguKdcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMICBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Lit4Li34LmI4LiZIOC5guC4lOC4ouC4geC4suC4o+C5g+C4iuC5ieC4peC4tOC4h+C4hOC5jCBcJ1BhcmVudENoaWxkXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ+C5gOC4meC4t+C5ieC4reC5gOC4o+C4t+C5iOC4reC4h+C4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4reC4meC4uOC4oeC4seC4leC4tOC4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfguKvguLHguKfguILguYnguK3guILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguILguK3guIfguJrguJfguITguKfguLLguKFGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+C4oOC4suC4ouC4meC4reC4gSAo4Lil4Li54LiB4LiE4LmJ4LiyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn4Lig4Liy4Lii4LmD4LiZICjguYDguK3guYDguKLguYjguJnguJXguYwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtC4INCw0YDRgtC40LrRg9C7INC00L7QstGW0LTQvdC40LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ9Ca0LvRjtGH0L7QstGWINGB0LvQvtCy0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQo9GC0L7Rh9C90LjRgtGMINGB0LzRi9GB0Lsg0Lgg0LjQt9C80LXQvdC40YLRjChBcHByb3ZhbCknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn0JHRg9C00LUg0L/QvtC60LDQt9Cw0L3Qviwg0Y/QuiDQutC+0LzQtdC90YLQsNGAINGDINCf0YDQvtCy0ZbQtNC90LjQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfQkdCw0LfQsCDQt9C90LDQvdGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfQhtGB0YLQvtGA0ZbRjyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfQk9C+0LvQvtGB0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Y8g0L/QvtCy0LjQvdC90LAg0LzQsNGC0Lgg0L3QsNC30LLRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ9CU0LDQvdCwINC60LDRgtC10LPQvtGA0ZbRjyDRg9C20LUg0ZbRgdC90YPRlC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ9Ce0L3QvtCy0LvQtdC90L3RliDQutCw0YLQtdCz0L7RgNGW0Zcg0LTQvtCy0ZbQtNC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn0JTQvtC00LDQvdGWINC60LDRgtC10LPQvtGA0ZbRlyDQtNC+0LLRltC00L3QuNC60LDQsC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICfQndC10L7QsdGF0ZbQtNC90L4g0LLQstC10YHRgtC4INC90LDQt9Cy0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn0KbRjyDQvNC+0LLQsCDQstC20LUg0ZbRgdC90YPRlCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ9Ce0L3QvtCy0LvQtdC90L4g0LzQvtCy0YMg0LTQvtCy0ZbQtNC60LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICfQlNC+0LTQsNC90L4g0LzQvtCy0YMg0LTQvtCy0ZbQtNC60LghJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICfQndC+0LzQtdGAIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9CU0Y/QutGD0ZTQvNC+LCDQt9CwINGC0LUsINGJ0L4g0L/RgNC+0LPQvtC70L7RgdGD0LLQsNC70LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn0JLQuCDQstC20LUg0LPQvtC70L7RgdGD0LLQsNC70LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn0J3QtdC80LDRlCDQvtCx0YDQsNC90L7RlyDQutCw0YLQtdCz0L7RgNGW0ZchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfQndCw0LTRgNGD0LrRg9Cy0LDRgtC4INGB0YLQsNGC0YLRjiDQtNC+0LLRltC00L3QuNC60LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfQlNC+0LLRltC00L3QuNC6ICjQvdC+0LLRliDRgdGC0LDRgtGC0ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfQlNC+0LLRltC00L3QuNC6ICjQvdC10LTQsNCy0L3QviDQt9C80ZbQvdC10L3RliDRgdGC0LDRgtGC0ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9CU0L7QstGW0LTQvdC40LogKNC90LDQudC60YDQsNGJ0ZYgMTAg0YHRgtCw0YLRgtC10LkpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQntGB0YLQsNC90L3RjyDRgdGC0LLQvtGA0LXQvdCwINGB0YLQsNGC0YLRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQntGB0YLQsNC90L3RjyDQt9C80ZbQvdC10L3QsCDRgdGC0LDRgtGC0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ9Ci0L7QvyAxMCDRgdGC0LDRgtGC0LXQuSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ9Cy0L3Rg9GC0YDRltGI0L3RltC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn0LfQvtCy0L1p0YjQvdGUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C/0YPQsdC70ZbRh9C90LUnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gQXZhaWxhYmxlLCAyID0gRW5hYmxlZCBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Cf0YDQvtCy0ZbQtNC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZSd9ID0gJ9C90L7QstCwINGB0YLQsNGC0YLRjyDQkdCXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfQoNGW0YjQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAn0KHQuNC80L/RgtC+0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICfQstGW0LTQutGA0LjRgtC1ICjQutC70ZbRlNC90YLQsNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn0LLRltC00LrRgNC40YLQtSAo0LDQs9C10L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqBGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICflhbPplK7lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnsbvliKvmmK/lv4XpnIDnmoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a6h5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUeexu+WIq+euoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICfmt7vliqDnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn5Yig6Zmk57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn56Gu5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+a3u+WKoOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn57yW6L6R57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn5a2Q57G75Yir5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAn6K+36Iez5bCR6YCJ5oup5LiA5Liq57uE5p2D6ZmQLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn6IO96K6/6Zeu5q2k57G75Yir5paH56ug55qE5pyN5Yqh5Lq65ZGY57uEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICflsIbkvZzkuLrms6jph4rlnKjmtY/op4jml7bmmL7npLouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfkvaDnoa7lrpropoHliKDpmaTov5nkuKrnsbvliKvlkJc/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn5L2g5LiN6IO95Yig6Zmk6L+Z5Liq57G75Yir77yM6K+l57G75Yir6Iez5bCR5YyF5ZCr5LiA56+HRkFR5paH56ug77yM5oiW6ICF6Iez5bCR5YyF5ZCr5LiA5Liq5a2Q57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn5LiL5YiXRkFR5paH56ug5L2/55So6K+l57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+ivpeexu+WIq+aYr+S4i+WIl+WtkOexu+WIq+eahOeItuexu+WIqyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfkvaDnoa7lrpropoHliKDpmaTor6VGQVHmlofnq6DlkJc/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUeefpeivhuW6kyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRkFR5rWP6KeI5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ+W/q+mAn+aQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn5YWB6K645L2/55So6YCa6YWN56ym44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ+mrmOe6p+aQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn5a2Q57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+ayoeacieaJvuWIsOWtkOexu+WIqy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ+WOhuWPsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfmsqHmnInmib7liLBGQVHml6Xlv5fmlbDmja7jgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFR6K+t6KiA566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ+WmguaenOimgeS9v+eUqOWkmuivreiogOWwseS9v+eUqOacrOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfmt7vliqDor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAn5Yig6Zmk6K+t6KiAICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ+a3u+WKoOivreiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn57yW6L6R6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfkvaDnoa7lrpropoHliKDpmaTov5nkuKror63oqIDlkJc/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+S9oOS4jeiDveWIoOmZpOi/meS4quivreiogO+8jOiHs+WwkeacieS4gOevh0ZBUeaWh+eroOS9v+eUqOivpeivreiogCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfkuIvliJdGQVHmlofnq6Dkvb/nlKjor6Xor63oqIAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfkuIrkuIvmloforr7nva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn5q+P6aG15pi+56S655qERkFR5paH56ug5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ+ayoeacieaJvuWIsEZBUeaVsOaNruOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICflhbPplK7lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ+aKleelqOaVsCAo5L6L5aaC77yMPSAxMCDmiJYgPj0gNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ+ivhOWIhiAo5L6L5aaC77yMPSAxMCUg5oiWID49IDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICfpgJrov4flrqHmibknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5LiK5qyh5L+u5pS55Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR5paH56ug5Yib5bu65pe26Ze0KOebuOWvuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR5paH56ug5Yib5bu65pe26Ze0KOe7neWvuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHmlofnq6Dkv67mlLnml7bpl7Qo55u45a+5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHmlofnq6Dkv67mlLnml7bpl7Qo57ud5a+5KSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVHlhajmlocnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdGQVHmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfphY3nva7pgInmi6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ+aKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn5peg5oqV56Wo6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn5oyH5a6a5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ+S+i+Wmgu+8muetieS6jjEw5oiW6ICF5aSn5LqONjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+ivhOWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn5peg6K+E5YiG6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfmjIflrpror4TliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfkvovlpoLvvJrnrYnkuo4yNSXmiJblpKfkuo43NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVHmlofnq6DliJvlu7rml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVHmlofnq6Dkv67mlLnml7bpl7QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR6K+m57uG5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ivhOWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJyg15YiG5Yi2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+aKleelqOasoeaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfov5jmsqHmnInmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICfov5jmsqHmnInmipXnpaghIOi/meWwhuaYr+ivpSBGQVEg5paH56ug55qE56ys5LiA5Liq5oqV56Wo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfkuIvovb3pmYTku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICfopoHmiZPlvIDkuIvpnaLmj4/ov7DkuK3nmoTpk77mjqXvvIzkvaDlj6/og73pnIDopoHlnKjljZXlh7vpk77mjqXnmoTlkIzml7bmjInkvY8gQ3RybCDmiJYgQ21kIOaIliBTaGlmdCDplK4g77yI5Y+W5Yaz5LqO5oKo55qE5rWP6KeI5Zmo5ZKM5pON5L2c57O757ufIO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ+atpOaWh+aho+WvueaCqOacieW4ruWKqeWQl++8n+ivt+e7meWHuuaCqOeahOivhOS7t++8jOW4ruWKqeaIkeS7rOWujOWWhOefpeivhuW6k++8jOiwouiwou+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+ayoeacieW4ruWKqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICflvojmnInluK7liqknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ+WinuWKoEZBUeagh+mimOWIsOaWh+eroOS4u+mimOS4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfmj5LlhaVGQVHmlofmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAn5o+S5YWl5a6M5pW0RkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+aPkuWFpUZBUemTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn5o+S5YWlRkFR5q2j5paH5ZKM6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICfmj5LlhaXlrozmlbRGQVHlkozpk77mjqUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfmnKrmib7liLBGQVHmlofnq6DjgIInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfov5nmnInliqnkuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ+ayoeacieaJvuWIsOacieeUqOeahOS4u+mimOWSjOato+aWh+i1hOa6kOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAn6ZSu5YWl5Li76aKY5oiW5q2j5paH5Lul6I635Y+W5pyJ55So55qE6LWE5rqQ5riF5Y2V44CCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICflnKhGQVHkuK3ov5vooYzlhajmlofmnKzmkJzntKLvvIjkvovlpoLvvJrigJxKb2huKm7igJ3miJbigJxXaWxsKuKAne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ+aKleelqOmZkOWItuadoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn5LuFRkFR5paH56ug55qE5oqV56Wo5pWw4oCm4oCmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAn6K+E5YiG6ZmQ5Yi25p2h5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ+S7hUZBUeaWh+eroOeahOivhOWIhuKApuKApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAn5LuFRkFR5paH56ug55qE5Yib5bu65pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ+S7heWcqOS7peS4i+aXtumXtOauteWIm+W7uueahEZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICflsIbmkJzntKLphY3nva7orr7nva7kuLrmqKHmnb/vvJ8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfmlofnq6DnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfkvb/nlKjlhbPplK7lrZfmkJzntKLmlofnq6AnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn5YWs5byAJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICfov5Tlm55GQVHmtY/op4jlmagnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ+S9oOmcgOimgXJ35p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICfmsqHmnInmib7liLDnlKjmiLfmnInor7vlhpnmnYPpmZDnmoTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAn5rKh5pyJ5om+5Yiw6buY6K6k6K+t6KiA5LiU5peg5rOV5Yib5bu65paw55qE6K+t6KiA44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAn6ZyA6KaBQ2F0ZWdvcnlJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICflv4XpobvovpPlhaXnsbvliKvlkI3np7AhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfnsbvliKvlt7LlrZjlnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfor6XnsbvliKvlt7LlrZjlnKjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrppDYXRlZ29yeUlEIO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICfkuI3og73liKDpmaTnsbvliKslc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVHnsbvliKvlt7Lmm7TmlrAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVHnsbvliKvlt7Lmt7vliqAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumkl0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOexu+WIq++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICfkuI3og73liKDpmaTnn6Xor4blupPmlofnq6Alc++8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdDYXRlZ29yeUlEICVz5peg5pWI44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICfkuI3og73mmL7npLrljoblj7Lkv6Hmga/vvIzlm6DkuLrmsqHmnInmjIflrppJdGVtSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdGQVHljoblj7InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVHml6Xlv5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAn6ZyA6KaB6YWN572u6YCJ6aG5RkFROjpGcm9udGVuZDo6T3ZlcnZpZXfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAn6YWN572u6YCJ6aG5RkFROjpGcm9udGVuZDo6T3ZlcnZpZXfpnIDopoHmmK/kuIDkuKrlk4jluIzlvJXnlKjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICfmsqHmnInmib7liLDop4blm77igJwlc+KAneeahOmFjee9rumAiemhue+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrppMYW5ndWFnZUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+WQjeensOaYr+W/hemcgOeahCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfor6Xor63oqIDlt7Lnu4/lrZjlnKghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJ+S4jeiDveWIoOmZpOivreiogCVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUeivreiogOW3suabtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0ZBUeivreiogOW3sua3u+WKoCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn5LiK5qyh5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUeWKqOaAgeWtl+autSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAn5LiN6IO96L295YWl6K+t6KiA5a+56LGh77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aXoOe7k+aenO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFR57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ+acgOWQjuS/ruaUueS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+efpeivhuW6k+adoeebruWIm+W7uuaXtumXtO+8iOWcqC4uLuS5i+WJjS/kuYvlkI7vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn55+l6K+G5bqT5p2h55uu5Yib5bu65pe26Ze077yI5ZyoLi4u5LmL6Ze077yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn55+l6K+G5bqT5p2h55uu5L+u5pS55pe26Ze077yI5ZyoLi4u5LmL5YmNL+S5i+WQju+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfnn6Xor4blupPmnaHnm67kv67mlLnml7bpl7TvvIjlnKguLi7kuYvpl7TvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAn562J5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ+Wkp+S6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn5aSn5LqO562J5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ+Wwj+S6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAn5bCP5LqO562J5LqOJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ+mcgOimgUZpbGVJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfmhJ/osKLmgqjnmoTmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn5oKo5bey57uP5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ+ayoeaciemAieaLqeaKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAn5oqV56Wo5py65Yi25rKh5pyJ5ZCv55So77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAn5rKh5pyJ5a6a5LmJ5oqV56Wo55qE5pyA5aSn6K+E5YiG5pWw77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUeaWh+eroOaJk+WNsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ+WcqC4uLuS5i+mXtOWIm+W7uic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfpnIDopoFJdGVtSUTvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUeaWh+eroCjmlrDliJvlu7rnmoQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVHmlofnq6Ao5pyA6L+R5L+u5pS555qEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdGQVHmlofnq6Ao5YmNMTDlkI0pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a57G75Z6L77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ+exu+Wei+W/hemhu+aYr+acgOWQjuWIm+W7uuOAgeacgOWQjuS/ruaUueaIllRvcDEw77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAn5LiN6IO95Yib5bu6UlNT5paH5Lu277yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVz77yIRkFR5YWo5paH77yJJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSDlrqLmiLfvvIglc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIOWuouaIt++8iEZBUeWFqOaWh++8iSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSDlhazlvIDvvIglc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDlhazlvIDvvIhGQVHlhajmlofvvIknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAn6K+36K+E5YiG77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfmlofnq6Dml6DlhoXlrrnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA6L+R5Yib5bu655qERkFR5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/keS/ruaUueeahEZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn5pyA5bi455So55qE5paH56ugJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ+WGheWuueexu+Weiyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn5YaF6YOoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+WFrOW8gCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ+WcqEhUTUzovpPlh7rnu5PmnpzkuK3kuLrpooTlrprkuYnlrZfnrKbkuLLmt7vliqDpk77mjqXnmoTov4fmu6TlmajjgILlm77lg4/lhYPntKDlhYHorrjkuKTnp43ovpPlhaXmlrnlvI/vvJrnrKzkuIDnp43mmK/nlKjlm77lg4/nmoTlkI3np7DvvIjlpoJmYXEucG5n77yJ77yM5Zyo6L+Z56eN5oOF5Ya15LiL5Lya5L2/55SoT1RSU+eahOWbvuWDj+i3r+W+hO+8m+esrOS6jOenjeaYr+aPkuWFpeWbvuWDj+eahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICfmt7vliqBGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfmipXnpajnu5PmnpznmoRDU1PpopzoibLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ0ZBUeaWh+eroOiDveaYvuekuueahOaXtumXtOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn566h55CG57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICflrqLmiLdGQVHmiZPljbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAn5a6i5oi3RkFR6K+m5oOF44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAn5a6i5oi3RkFR5pCc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICflrqLmiLdGQVHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMuJ30gPSAn5a6i5oi35bi46KeB6Zeu6aKY55u45YWz5paH56ug44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+S7peWNgeWIhuWItuaYvuekuuivhOWIhue7k+aenOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn6buY6K6k55qE55uu5b2V5ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfljZXor63oqIDmqKHlvI/kuItGQVHmlofnq6DnmoTpu5jorqTor63oqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRkFR5paH56ug6buY6K6k5pi+56S65qCH6aKY55qE5pyA5aSn5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0ZBUSDmlofnq6DlrqHmibnor7fmsYLlt6XljZXnmoTpu5jorqTkvJjlhYjnuqfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0ZBUeaWh+eroOeahOm7mOiupOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIOaWh+eroOivt+axguaJueWHhuW3peWNleeahOm7mOiupOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVEg5paH56ug6K+35rGC5om55YeG5bel5Y2V55qE6buY6K6k57G75Z6L44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICflhazlhbHliY3nq6/nlYzpnaLmjIfku6Tlj4LmlbDnmoTpu5jorqTlgLzvvIzmjIfku6Tlj4LmlbDnlKjkuo7ns7vnu5/ohJrmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeWvueixoeWwj+mDqOS7tihMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IFwiY29tcGxleFwiKeiuvue9ruaMiemSruS4reeahOaTjeS9nOOAguivt+azqOaEj++8jOi/meS6m+aTjeS9nOW/hemhu+W3sue7j+WcqOS7peS4i0pT5ZKMQ1NT5paH5Lu25Lit5rOo5YaM77yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBIENvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz5ZKMQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn5a6a5LmJRkFR5qCH6aKY5piv5ZCm6KaB5Yqg5Yiw5paH56ug5Li76aKY5Lit44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeeahOefpeivhuW6k+Wwj+mDqOS7tihMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IinopoHmmL7npLrnmoTliJfjgILms6jmhI/vvJrlj6rmnInnn6Xor4blupPlsZ7mgKflkozliqjmgIHlrZfmrrXvvIhEeW5hbWljRmllbGRfTmFtZVjvvInmiY3og73kvZzkuLrpu5jorqTliJfvvIzlj6/nlKjnmoTorr7nva7lgLzkuLrvvJowID0g56aB55So77yMMSA9IOWPr+eUqO+8jCAyID0g6buY6K6k5ZCv55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quaYvuekukZBUeaXpeW/l+eugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICflrprkuYnkuIDkuKrmmL7npLpGQVHliJfooajnroDmtIHop4blm77nmoTmpoLop4jmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOacjeWKoeS6uuWRmOeVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5a6i5oi355WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5YWs5YWx55WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5a6i5oi355WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWFrOWFseeVjOmdoueahEZBUea1j+iniOWZqOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOacjeWKoeS6uuWRmOeVjOmdoueahEZBUea1j+iniOWZqOS4reaYvuekukZBUeeahOmhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWuouaIt+eVjOmdoueahEZBUea1j+iniOWZqOS4reaYvuekukZBUeeahOmhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjlhazlhbHnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mmL7npLpGQVHnmoTpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit55qE5pi+56S66aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWuouaIt+eVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reeahOaYvuekuumhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5YWs5YWx55WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit55qE5pi+56S66aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJRkFR5pCc57Si56qX5Y+j5Lit6buY6K6k55qE55So5LqO5pCc57Si55qERkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ+WumuS5ieWfuuS6jkZBUeeahOW3peWNleS4reimgeaPkuWFpeeahOS/oeaBr+OAguKAnOWujOaVtEZBUeKAneWMheaLrOaWh+acrOOAgemZhOS7tuWSjOWGheW1jOWbvuWDj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICflrprkuYnku6rooajmnb/nmoTlkI7nq6/lj4LmlbDjgILigJzpmZDliLbigJ3lrprkuYnpu5jorqTmmL7npLrmnaHnm67nmoTmlbDph4/jgILigJznu4TigJ3nlKjkuo7mjqfliLbog73orr/pl67mraTmqKHlnZfnmoTnu4TvvIjlpoLvvJphZG1pbjtncm91cDE7Z3JvdXAy57uE77yJ44CC4oCc6buY6K6k4oCd6KGo56S65q2k5qih5Z2X6buY6K6k5Li65Y+v55So5oiW6ZyA6KaB55So5oi35omL5Yqo5ZCv55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WumuS5ieWcqEZBUea1j+iniOWZqOS4reimgeaYvuekuueahOWIl+OAgui/meS4qumAiemhueS4jeS8muW9seWTjeWIl+eahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WumuS5ieWcqEZBUeaXpeW/l+S4reimgeaYvuekuueahOWIl+OAgui/meS4qumAiemhueS4jeS8muW9seWTjeWIl+eahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5a6a5LmJ5ZyoRkFR5pCc57Si57uT5p6c5Lit6KaB5pi+56S655qE5YiX44CC6L+Z5Liq6YCJ6aG55LiN5Lya5b2x5ZON5YiX55qE5L2N572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAn5a6a5LmJ4oCc5o+S5YWlRkFR4oCd6ZO+5o6l5Zyo5L2V5aSE5pi+56S644CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ+WumuS5iSBGQVEg5p2h55uu55qE5LiN5Y+X6ZmQ5paH5a2X5a2X5q61Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfliKDpmaTov5nnr4dGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuK3mt7vliqBGQVHml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqO+8jDIgPSDlkK/nlKjkuJTlv4XloasnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit57yW6L6RRkFR5pe25Yqo5oCB5a2X5q615pi+56S66K6+572u77yM5Y+v55So5YC85Li677yaMCA9IOemgeeUqO+8jDEgPSDlkK/nlKjvvIwyID0g5ZCv55So5LiU5b+F5aGrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLkuK3mt7vliqBGQVHml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqO+8jDIgPSDlkK/nlKjkuJTlv4XloasnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLkuK3nvJbovpFGQVHml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqO+8jDIgPSDlkK/nlKjkuJTlv4XloasnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuK3miZPljbBGQVHml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouS4reaJk+WNsEZBUeaXtuWKqOaAgeWtl+auteaYvuekuuiuvue9ru+8jOWPr+eUqOWAvOS4uu+8mjAgPSDnpoHnlKjvvIwxID0g5ZCv55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+WFrOWFseeVjOmdouS4reaJk+WNsEZBUeaXtuWKqOaAgeWtl+auteaYvuekuuiuvue9ru+8jOWPr+eUqOWAvOS4uu+8mjAgPSDnpoHnlKjvvIwxID0g5ZCv55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuK3mkJzntKJGQVHml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqO+8jDIgPSDlkK/nlKjkuJTpu5jorqTmmL7npLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouS4reaQnOe0okZBUeaXtuWKqOaAgeWtl+auteaYvuekuuiuvue9ru+8jOWPr+eUqOWAvOS4uu+8mjAgPSDnpoHnlKjvvIwxID0g5ZCv55So77yMMiA9IOWQr+eUqOS4lOm7mOiupOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+WFrOWFseeVjOmdouS4reaQnOe0okZBUeaXtuWKqOaAgeWtl+auteaYvuekuuiuvue9ru+8jOWPr+eUqOWAvOS4uu+8mjAgPSDnpoHnlKjvvIwxID0g5ZCv55So77yMMiA9IOWQr+eUqOS4lOm7mOiupOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmpoLop4jop4blm77mmL7npLrml7bliqjmgIHlrZfmrrXmmL7npLrorr7nva7vvIzlj6/nlKjlgLzkuLrvvJowID0g56aB55So77yMMSA9IOWQr+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR6K+m5oOF56qX5Y+j5pi+56S65pe25Yqo5oCB5a2X5q615pi+56S66K6+572u77yM5Y+v55So5YC85Li677yaMCA9IOemgeeUqO+8jDEgPSDlkK/nlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouS4re+8jEZBUeivpuaDheeql+WPo+aYvuekuuaXtuWKqOaAgeWtl+auteaYvuekuuiuvue9ru+8jOWPr+eUqOWAvOS4uu+8mjAgPSDnpoHnlKjvvIwxID0g5ZCv55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAn5YWs5YWx55WM6Z2i5Lit77yMRkFR6K+m5oOF56qX5Y+j5pi+56S65pe25Yqo5oCB5a2X5q615pi+56S66K6+572u77yM5Y+v55So5YC85Li677yaMCA9IOemgeeUqO+8jDEgPSDlkK/nlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ+e8lui+kUZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn5ZyoRkFR5qih5Z2X5Lit5ZCv55So5aSa56eN6K+t6KiA44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ+WQr+eUqOWuouaIt+WJjeerr+eahOebuOWFs+aWh+eroOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+WcqEZBUeaooeWdl+S4reWQr+eUqOaKleelqOacuuWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ+a1j+iniCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICfnlKjkuo5GQVHlr4zmlofmnKznmoRBSkFYIFJlc3BvbmRlcuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ0ZBUeWMuuWfnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVHljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVHliKDpmaTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRkFR57yW6L6R44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHml6Xlv5fmpoLop4jigJznroDmtIHop4blm77igJ3pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHmpoLop4jigJznroDmtIHop4blm77igJ3pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUeaJk+WNsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdGQVHml6Xlv5fmpoLop4jigJznroDmtIHop4blm77igJ3kuK3mr4/pobXmmL7npLrnmoRGQVHmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxpbWl0IHBlciBwYWdlIGZvciBGQVEgT3ZlcnZpZXcgIlNtYWxsIid9ID0gJ0ZBUeamguiniOKAnOeugOa0geinhuWbvuKAneS4reavj+mhteaYvuekuueahEZBUeaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pCc57Si55qE5ZCO5Y+w6YCJ6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ+Wtl+autTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAn5a2X5q61NSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ+WujOaVtEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfmibnlh4YgRkFRIOaWh+eroOivt+axgueahOe+pOe7hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFR5paH56ug55qE5Y6G5Y+y5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICflnKjln7rkuo5GQVHmlofnq6DnmoTlt6XljZXkuK3ljIXlkKvlhoXpg6jlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICflnKjln7rkuo5GQVHmlofnq6DnmoTlt6XljZXkuK3ljIXlkKvmr4/kuKrlrZfmrrXnmoTlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICflv6vpgJ/mkJzntKLml7bmmL7npLrnmoTnlYzpnaInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ+aXpeW/lyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn566h55CG6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAn5Li65bu656uL5YWz6ZSu5a2XRkFR5paH56ug5YiX6KGo55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+mTvuaOpeWvueixoeWIsOi/meS4qkZBUeadoeebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ+WQr+eUqOebuOWFs+aWh+eroOWKn+iDveeahOmYn+WIl+WQjeensOWIl+ihqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3og73lpJ/kvb/nlKjnmoTnirbmgIHnsbvlnovliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit6IO95aSf5L2/55So55qE54q25oCB57G75Z6L5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3og73lpJ/kvb/nlKjnmoTnirbmgIHnsbvlnovliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6IO95aSf5pi+56S6RkFR5paH56ug55qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUea1j+iniOWZqOiDveWkn+aYvuekukZBUeaWh+eroOeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6IO95aSf5pi+56S6RkFR5paH56ug55qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHml6Xlv5fog73lpJ/mmL7npLpGQVHmlofnq6DnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5Pmnpzog73lpJ/mmL7npLrnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5Pmnpzog73lpJ/mmL7npLrnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c6IO95aSf5pi+56S655qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4re+8jEZBUea1j+iniOWZqOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5PmnpzmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5PmnpzmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUeaXpeW/l+inhuWbvuaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jOeUqOS6jueugOefreeahEZBUeaQnOe0ouiAjOeUn+aIkEhUTUzlvIDmlL7lvI/mkJzntKLphY3nva7mlofku7bnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yM5Li65LyY5YyWRkFR5pCc57Si55So5LqO55Sf5oiQSFRNTOW8gOaUvuaQnOe0ou+8iE9wZW5TZWFyY2jvvInphY3nva7nmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM55So5LqO566A55+t55qERkFR5pCc57Si6ICM55Sf5oiQSFRNTOW8gOaUvuW8j+aQnOe0oumFjee9ruaWh+S7tueahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfliJvlu7pGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn5paw5bu655qERkFR5paH56ug5Zyo5Y+R5biD5LmL5YmN6ZyA6KaB5a6h5om544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUea1j+iniOWZqOinhuWbvuaYvuekuueahEZBUeaWh+eroOaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6KeG5Zu+5pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOavj+mhteaYvuekuueahEZBUeaWh+eroOaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5q+P6aG15pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn5pi+56S65pyA6L+R5pu05pS55p2h55uu55qE5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn5pi+56S65pyA5paw5Yib5bu65p2h55uu55qE5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn5oyJVG9wMTDmoLzlvI/mmL7npLrnmoTmnaHnm67mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJ+a3u+WKoEphdmFzY3JpcHTliLDlrqLmiLflt6XljZXmtojmga/nqpflj6PnmoTovpPlh7rov4fmu6TlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn55u45YWzRkFR5paH56ug55qE6L6T5Ye66ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+aYvuekukZBUeadoeebrueahOW+ruWei0ZBUeaXpeW/l+amguiniOeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn5pi+56S6RkFR5p2h55uu55qERkFR5qaC6KeI566A5rSB6KeG5Zu+55qE6aG16Z2i5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn5omT5Y2w6L+Z56+HRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAn5YWs5byARkFR5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICflhazlvIBGQVHor6bmg4XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAn5YWs5byARkFR5pCc57Si44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn5YWs5byARkFR44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+WuoeaJuSBGQVEg5paH56ug55qE6Zif5YiX44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAn5aW96K+E546HLCDplK7lgLzlv4Xpobvku6Xnmb7liIbmr5TooajnpLrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ+eugOa0gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn5pCc57SiRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn5Zyo4oCdQWdlbnRGQVFab29t4oCc5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOm7mOiupOmrmOW6pu+8iOWNleS9je+8muWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt0ZBUeivpuaDheWSjOWFrOW8gEZBUeivpuaDheS4re+8jOiuvue9ruWGhee9rkhUTUzlrZfmrrXnmoTpu5jorqTpq5jluqbvvIjmjInlg4/ntKDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOacgOWkp+mrmOW6pu+8iOaMieWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt0ZBUeivpuaDheWSjOWFrOW8gEZBUeivpuaDheS4re+8jOiuvue9ruWGhee9rkhUTUzlrZfmrrXnmoTmnIDlpKfpq5jluqbvvIjmjInlg4/ntKDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICflr7nkuo7lhazlvIDnmoRGQVHmlofnq6DvvIzlnKjmnI3liqHkurrlkZhGQVHor6bmg4Xnqpflj6PkuK3mmL7npLrigJzmj5LlhaVGQVHpk77mjqXigJ3mjInpkq7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn5a+55LqO5YWs5byA55qERkFR5paH56ug77yM5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S64oCc5o+S5YWlRkFR5paH5pys5ZKM6ZO+5o6l4oCdL+KAnOaPkuWFpeWujOaVtEZBUeWSjOmTvuaOpeKAneaMiemSruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S64oCc5o+S5YWlRkFR5paH5pys4oCdL+KAnOaPkuWFpeWujOaVtEZBUeKAneaMiemSruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfku6UgSFRNTCDmoLzlvI/mmL7npLogRkFRIOaWh+eroOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfmmK8v5ZCm5pi+56S6IEZBUSDot6/lvoTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIzlnKhGQVHmtY/op4jlmajnu5PmnpzkuK3mmL7npLrml6DmlYjmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+aYvuekuuWtkOebruW9leeahOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICflnKjlrprkuYnnmoTnlYzpnaLkuIrmmL7npLrmnIDov5Hmm7TmlLnnmoTmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuuacgOaWsOWIm+W7uueahOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICfmmL7npLrmlofnq6DnmoTmmJ/nuqfnrYnkuo7miJbpq5jkuo7lrprkuYnnmoTlgLzvvIjorr7nva7lgLzigJww4oCd5YiZ6L6T5Ye65Li656m677yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICflnKjlrprkuYnnmoTnlYzpnaLkuIrmmL7npLrngrnlh7vph4/liY3ljYHkuKrmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuuaWh+eroOivhOWIhuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuWFgeiuuOWwhkZBUemTvuaOpeWIsOWPpuS4gOS4quWvueixoeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeeahOivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuWFgeiuuOWIoOmZpEZBUeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeeahOivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuiuv+mXrkZBUeWOhuWPsueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM5Zyo6K+lRkFR55qE6K+m5oOF56qX5Y+j6I+c5Y2V5Lit5pi+56S657yW6L6RRkFR55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIzlnKjor6VGQVHnmoTor6bmg4Xnqpflj6Poj5zljZXkuK3mmL7npLrlkI7pgIDnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLnmoTor6bmg4Xnqpflj6Poj5zljZXkuK3vvIzmmL7npLrmiZPljbBGQVHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfop6PlhrPmlrnmoYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ+eXh+eKtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICfku4XmlofmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn55u45YWzRkFR5paH56ug55qE6buY6K6k6K+t6KiA44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0ZBUSDnmoTmoIfor4bnrKYsIOS+i+WmgiAo5bi46KeB6Zeu6aKY6Kej562UKUZBUSMsICjnn6Xor4blupMpS0IjLCDpu5jorqTkuLogRkFRI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzmma7pgJrvvIhOb3JtYWzvvInigJ3nmoTpk77mjqXnsbvlnovkuI7lhbbku5ZGQVHlr7nosaHov57mjqXnmoRGQVHlr7nosaHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzniLblrZDvvIhQYXJlbnRDaGlsZO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7lkZBUeWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzmma7pgJrvvIhOb3JtYWzvvInigJ3nmoTpk77mjqXnsbvlnovkuI7lhbbku5blt6XljZXlr7nosaHov57mjqXnmoRGQVHlr7nosaHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzniLblrZDvvIhQYXJlbnRDaGlsZO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7luW3peWNleWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFRIOaWh+eroOWuoeaJueivt+axgueahOW3peWNleato+aWh+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFRIOaWh+eroOWuoeaJueivt+axgueahOW3peWNleagh+mimOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAn5b+r5o236ZSu55qE5bel5YW35qCP5p2h55uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICflpJbpg6go55So5oi3KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YaF6YOoKOacjeWKoeS6uuWRmCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAn5YWs5byA77yI5YWs5byA77yJJzsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfpl5zpjbXlrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnm67pjITliIbpoZ7ngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a+p5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+W4uOimi+WVj+mhjOebrumMhOWIhumhnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICfmt7vliqDnm67pjITliIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn5Yiq6Zmk55uu6YyE5YiG6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn5re75Yqg55uu6YyE5YiG6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfnt6jovK/nm67pjITliIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfoq4vpgbjmk4foh7PlsJHkuIDlgIvmrIrpmZDntYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+WPr+S7peWtmOWPluatpOebrumMhOWIhumhnuaWh+eroOeahOacjeWLmeWToee1hOWIpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn5Zyo54CP6Ka95Zmo5Lit5bCH5pyD6aGv56S654K66KmV6KiA44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfmgqjnorrlrpropoHliKrpmaTmraTnm67pjITliIbpoZ7vvJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfmgqjnhKHms5XliKrpmaTmraTnm67pjITliIbpoZ7jgILoh7PlsJHooqvkuIDnr4fluLjopovllY/poYzmlofnq6DlnKjmraTnm67pjITliIbpoZ7lhafvvIzlj4ov5oiW5a6D5piv6Iez5bCR5LiA5YCL5YW25LuW55uu6YyE5YiG6aGe5piv5a6D55qE5q+N55uu6YyE5YiG6aGe44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn5Lul5LiL55qE5bi46KaL5ZWP6aGM5paH56ug5L2/55So5q2k55uu6aGe5YiG6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+S7peS4i+ebrumMhOWIhumhnuaYr+atpOebrumMhOWIhumhnueahOWtkOebrumMhOWIhumhnic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfmgqjnorrlrpropoHliKrpmaTmraTluLjopovllY/poYzmlofnq6DvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAn5bi46KaL5ZWP6aGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICfmjqLntKLluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn5b+r6YCf5pCc5bCLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICflrrnoqLHkvb/nlKjpgJrphY3nrKbomZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn6YCy6ZqO5pCc5bCLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICflrZDnm67pjITliIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAn5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn5rKS5pyJ5om+5Yiw5a2Q55uu6YyE5YiG6aGe44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfmrbflj7InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn5rKS5pyJ5om+5Yiw5bi46KaL5ZWP6aGM5pel6KqM5pW45pOa44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+W4uOimi+WVj+mhjOiqnuiogOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn5re75Yqg6Kqe6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ+WIqumZpOiqnuiogCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfmt7vliqDoqp7oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+e3qOi8r+iqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn5oKo56K65a6a6KaB5Yiq6Zmk5q2k6Kqe6KiA77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+aCqOeEoeazleWIqumZpOatpOiqnuiogOOAguWug+iiq+iHs+WwkeS4gOevh+W4uOimi+WVj+mhjOaWh+eroOS9v+eUqOS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+S7peS4i+W4uOimi+WVj+mhjOaWh+eroOato+S9v+eUqOatpOebrumMhOWIhumhnic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+ioree9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfluLjopovllY/poYzmlofnq6Av6aCBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ+aykuacieaJvuWIsOW4uOimi+WVj+mhjOaVuOaTmuOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICfpl5zpjbXlrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ+aKleelqCAo5L6L77ya562J5pa8MTDmiJblpKfmlrw2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn6KmV5YiGICjkvovvvJrnrYnmlrwyNSXmiJblpKfmlrw3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn5bey6YCa6YGO5a+p5om5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+acgOW+jOS/ruaUueaWvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOWJteW7uuaZgumWkyAo5LmL5YmNL+S5i+W+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pmC6ZaTKOS5i+mWkyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfluLjopovllY/poYzmlofnq6Dmm7TmlrDmmYLplpMo5LmL5YmNL+S5i+W+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5pu05paw5pmC6ZaTKOS5i+mWkyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAn5bi46KaL5ZWP6aGM5YWo5paH5YWn5a65JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn5bi46KaL5ZWP6aGM5pCc5bCLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAn5qqU5qGI6LOH5paZ6YG46aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ+aykuacieaKleelqOioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ+aMh+WumumBuOelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICfkvovvvJrnrYnmlrwxMOaIluWkp+aWvDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICfoqZXliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ+aykuacieipleWIhuioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAn5oyH5a6a6KmV5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAn5L6L77ya562J5pa8MjUl5oiW5aSn5pa8NzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug57eo6Lyv5pmC6ZaTJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ+W4uOimi+WVj+mhjOizh+ioiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfoqZXliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfpgbjnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn5rKS5pyJ5om+5Yiw6YG456Wo77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+S4i+i8iemZhOS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+aykuacieW5q+WKqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICflvojmnInluavliqknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ+a3u+WKoOW4uOimi+WVj+mhjOaomemhjOWIsOaWh+eroOaomemhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfmj5LlhaXluLjopovllY/poYzmloflrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAn5o+S5YWl5YWo6YOo5bi46KaL5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+aPkuWFpeW4uOimi+WVj+mhjOmAo+e1kCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn5o+S5YWl5bi46KaL5ZWP6aGM5paH5a2X5Y+K6YCj57WQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICfmj5LlhaXlhajpg6jluLjopovllY/poYzlj4rpgKPntZAnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfmspLmnInmib7liLDluLjopovllY/poYzmlofnq6DjgIInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICfluLjopovllY/poYzmlofnq6DlhajmlofmqqLntKIgKOS+i++8miJKb2huKm4iIOaIliAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ+aKleelqOmZkOWItuaineS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn5Y+q5piv5pyJ6KKr5oqV6YG455qE5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAn6KmV5YiG6ZmQ5Yi25qKd5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ+WPquaYr+acieipleWIhueahOW4uOimi+WVj+mhjOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAn5Y+q5piv5bey5Ym15bu655qE5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ+WPquaYr+W4uOimi+WVj+mhjOaWh+eroOWJteW7uuaWvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfmlofnq6Dnt6jomZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfnlKjpl5zpjbXlrZfmkJzlsIvmlofnq6AnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn5YWs6ZaLJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICflm57liLDluLjopovllY/poYzngI/opr3lmagnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfnm67pjITliIbpoZ7lv4XpoIjmnInlkI3nqLEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfmraTnm67pjITliIbpoZ7lt7LntpPlrZjlnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ+W4uOimi+WVj+mhjOebrumMhOWIhumhnuW3suabtOaWsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ+W4uOimi+WVj+mhjOebrumMhOWIhumhnuW3sua3u+WKoCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ+W4uOimi+WVj+mhjOaXpeiqjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICflkI3nqLHngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn5q2k6Kqe6KiA5bey5a2Y5ZyoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5re75YqgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfmnIDlvozmm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAn5bi46KaL5ZWP6aGM5YuV5oWL5qyE5L2NJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aykuaciee1kOaenCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ+W4uOimi+WVj+mhjOe3qOiZnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+aEn+isneaCqOeahOaKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfmgqjlt7HntpPmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn5rKS5pyJ6YG45Y+W6KmV5YiGISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn5bi46KaL5ZWP6aGM5paH56ug5YiX5Y2wJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn5bi46KaL5ZWP6aGM5paH56ugICjmlrDmt7vliqApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfluLjopovllY/poYzmlofnq6AgKOacgOi/keabtOaWsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAn5bi46KaL5ZWP6aGM5paH56ugICjpppYxMOevhyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn5q2k5paH56ug54K656m655m9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hmt7vliqDnmoTluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA6L+R5pu05paw5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfpppYxMOevh+W4uOimi+WVj+mhjOaWh+eroCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WFp+mDqOeahCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqOeahCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazplovnmoQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6YG456Wo57WQ5p6c5L2/55So55qEQ1NTIOmhj+iJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAn6Zui6ZaL5bi46KaL5ZWP6aGM6aCF55uu55qE57ep5a2Y5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfnm67pjITliIbpoZ7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6YG456Wo57WQ5p6c5bCP5pW45L2NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfpu5joqLHnm67pjITliIbpoZ7lkI3nqLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ+WWruS4gOiqnuiogOaooeW8j+S4i+eahOW4uOimi+WVj+mhjOaWh+eroOm7mOioseiqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICfpu5joqLHluLjopovllY/poYzmlofnq6DmqJnpoYzpoa/npLrnmoTmnIDlpKflgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn562J5b6F5a+p5om55bi46KaL5ZWP6aGM5paH56ug5bel5Zau6aCQ6Kit5YSq5YWI5YC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfluLjopovllY/poYzmop3nm67poJDoqK3ni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+etieW+heWvqeaJueW4uOimi+WVj+mhjOaWh+eroOeahOW3peWWrum7mOioseeLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfnrYnlvoXlr6nmibnluLjopovllY/poYzmlofnq6DnmoTlt6Xllq7pu5joqLHpoZ7liKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEF2YWlsYWJsZSwgMiA9IEVuYWJsZWQgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICfoqK3lrprpoa/npLrluLjopovllY/poYzml6XoqozlsI/mqqLplrHmqKHlvI/nmoTmpoLms4HmqKHntYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAn6Kit5a6a6aGv56S65bi46KaL5ZWP6aGM5YiX6KGo5bCP5qqi6Zax5qih5byP55qE5qaC5rOB5qih57WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAn6Kit5a6aIFwn5o+S5YWl5bi46KaL5ZWP6aGMXCcg6aGv56S65L2N572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfliKrpmaTmraTluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFBvc3NpYmxlIHNldHRpbmdzOiAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfnt6jovK/mraTluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WVk+eUqOW4uOimi+WVj+mhjOaooee1hOWkmueoruiqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfllZPnlKjluLjopovllY/poYzmqKHntYTmipXnpajmqZ/liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfngI/opr3lmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ+W4uOimi+WVj+mhjOaXpeiqjOamguazgSAi5bCPIiDmqKHlvI/pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfluLjopovllY/poYzmpoLms4EgIuWwjyLmqKHlvI/pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGltaXQgcGVyIHBhZ2UgZm9yIEZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICfluLjopovllY/poYzml6XoqozmpoLms4EgIuWwjyIg5qih5byP5q+P6aCB6aGv56S65bi46KaL5ZWP6aGM5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsaW1pdCBwZXIgcGFnZSBmb3IgRkFRIE92ZXJ2aWV3ICJTbWFsbCInfSA9ICfluLjopovllY/poYzmpoLms4EgIuWwjyIgIOaooeW8j+avj+mggemhr+ekuuW4uOimi+WVj+mhjOaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ+ashOS9jTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAn5qyE5L2NNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfluLjopovllY/poYzmlofnq6Dlr6nmibnnlKjmiLbntYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+atpOW4uOimi+WVj+mhjOatt+WPsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn5bi46KaL5ZWP6aGM54K65pys55qE5bel5Zau5YyF5ZCr55qE5YWn6YOo5qyE5L2NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn5bi46KaL5ZWP6aGM54K65pys55qE5bel5Zau5YyF5ZCr55qE5q+P5LiA5qyE5L2N5ZCN56ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn6aGv56S65b+r6YCf5pCc5bCL55qE5LuL6Z2iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICfml6XoqownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+iqnuiogOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICfpgKPntZDlhbbku5bnianku7bliLDmraTluLjopovllY/poYznianku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5YuZ5ZOh5LuL6Z2i5Y+v5L2/55So55qE54uA5oWL5YiG6aGe5YiX6KGoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaItuS7i+mdouWPr+S9v+eUqOeahOeLgOaFi+WIhumhnuWIl+ihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs6ZaL5LuL6Z2i5Y+v5L2/55So55qE54uA5oWL5YiG6aGe5YiX6KGoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWLmeWToeS7i+mdouWPr+mhr+ekuuaWvOW4uOimi+WVj+mhjOeAj+imveWZqOe1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkmuaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLbku4vpnaLlj6/poa/npLrmlrzluLjopovllY/poYzngI/opr3lmajntZDmnpznmoTluLjopovllY/poYzmlofnq6DmnIDlpKfmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOmWi+S7i+mdouWPr+mhr+ekuuaWvOW4uOimi+WVj+mhjOeAj+imveWZqOe1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5YuZ5ZOh5LuL6Z2i5Y+v6aGv56S65pa85bi46KaL5ZWP6aGM5pel6KqM55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5YuZ5ZOh5LuL6Z2i5Y+v6aGv56S65pa85pCc5bCL57WQ5p6c55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi25LuL6Z2i5Y+v6aGv56S65pa85pCc5bCL57WQ5p6c55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOmWi+S7i+mdouWPr+mhr+ekuuaWvOaQnOWwi+e1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUnfSA9ICfmlrDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn5paw5bi46KaL5ZWP6aGM5paH56ug55m85L2I5YmN6ZyA6KaB57aT6YGO5a+p5om5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn5pyA6L+R5pu05paw6aGv56S66aCF55uu5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn5pyA6L+R5Ym15bu66aGv56S66aCF55uu5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn6aaWMTDnr4flip/og73poa/npLrpoIXnm67mlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfliJfljbDmraTluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5a+p5om55L2H5YiXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAn5oqV56Wo6KmV5YiG44CC5pW45YC85b+F6aCI54K655m+5YiG546H44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ+aQnOWwi+W4uOimi+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ+ioreWumuWcqEFnZW50RkFRWm9vbeS4reWFp+W1jEhUTUzmrITkvY3pu5joqLHpq5jluqYgKOWDj+e0oCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfoqK3lrprlnKhDdXN0b21lckZBUVpvb20gKOWPilB1YmxpY0ZBUVpvb20p5Lit5YWn5bWMSFRNTOashOS9jem7mOiosemrmOW6piAo5YOP57SgKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAn5LulSFRNTOagvOW8j+mhr+ekuuW4uOimi+WVj+mhjOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfpoa/npLrluLjopovllY/poYzot6/lvpEgKOaYry/lkKYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfpoa/npLrlrZDnm67pjITliIbpoZ7poIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6aGv56S65oyH5a6a5LuL6Z2i55qE5pyA6L+R5pu05paw6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfpoa/npLrmjIflrprku4vpnaLnmoTmnIDov5HlibXlu7rpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfpoa/npLrmjIflrprku4vpnaLnmoTpppYxMOWAi+mgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6aGv56S65oyH5a6a5LuL6Z2i55qE5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ+ino+axuuaWueahiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCAo5a6i5oi2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YWn6YOoICjmnI3li5nlk6EpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1ldGVycwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KFRpdGxlIENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFZhbGlkSUQgS2V5d29yZHMgQXBwcm92ZWQgRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpCiAgICAgICAgKQogICAgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoYXQgdGhlcmUgYXJlIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIKICAgIGlmICgKICAgICAgICAhJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzCiAgICAgICAgfHwgcmVmICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyBuZSAnSEFTSCcKICAgICAgICB8fCAhJXskVXNlckNhdGVnb3JpZXNMb25nTmFtZXN9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCB2YWx1ZXMgZm9ybSBodHRwIHJlcXVlc3QKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvcm0gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVwbG9hZCBjYWNoZSBvYmplY3QKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgIyBnZXQgZm9ybSBpZAogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CgogICAgIyBjcmVhdGUgZm9ybSBpZAogICAgaWYgKCAhJEZvcm1JRCApIHsKICAgICAgICAkRm9ybUlEID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFF1ZXVlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgY29udGVudCB0eXBlCiAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHRoZSBGQVEgYWRkIHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgICAgIGlmICggISRBcHByb3ZhbFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFkbWluU3lzQ29uZmlnO1N1YmFjdGlvbj1FZGl0OycKICAgICAgICAgICAgICAgICAgICAgICAgLiAnU3lzQ29uZmlnU3ViR3JvdXA9Q29yZSUzQSUzQUFwcHJvdmFsO1N5c0NvbmZpZ0dyb3VwPUZBUScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEhUTUwgb3V0cHV0CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgIFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCAgICAgICAgPT4gXCVEeW5hbWljRmllbGRIVE1MLAoKICAgICAgICAgICAgIyBsYXN0IHZpZXdlZCBjYXRlZ29yeSBmcm9tIHNlc3Npb24gKHdyaXR0ZW4gYnkgRkFRIGV4cGxvcmVyKQogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAkU2VsZi0+e0xhc3RWaWV3ZWRDYXRlZ29yeX0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRDb250ZW50VHlwZSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2F2ZSB0aGUgRkFRCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJRHMgPSBtYXAgewogICAgICAgICAgICBteSAoJElEKSA9ICRfID1+IG17IFxBIEF0dGFjaG1lbnREZWxldGUgKFxkKykgXHogfXhtczsKICAgICAgICAgICAgJElEID8gJElEIDogKCk7CiAgICAgICAgfSAkUGFyYW1PYmplY3QtPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yIG15ICRDb3VudCAoIHJldmVyc2Ugc29ydCBAQXR0YWNobWVudElEcyApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGRlbGV0ZSBidXR0b24gd2FzIHByZXNzZWQgZm9yIHRoaXMgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkQ291bnQiICk7CgogICAgICAgICAgICAjIGNoZWNrIG5leHQgYXR0YWNobWVudCBpZiBpdCB3YXMgbm90IHByZXNzZWQKICAgICAgICAgICAgbmV4dCBDT1VOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0F0dGFjaG1lbnRVcGxvYWQnICkgKSB7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIGdldCB0aGUgdXBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdDsKCiAgICAgICAgICAgICMgZG8gbm90IHZhbGlkYXRlIG9uIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgICAgIGlmICggISRFcnJvcntBdHRhY2htZW50fSApIHsKCiAgICAgICAgICAgICAgICAkVmFsaWRhdGlvblJlc3VsdCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgICAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICB8fCAnJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkVmFsaWRhdGlvblJlc3VsdC0+e0Vycm9yTWVzc2FnZX0gfHwgJycsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICAjIG9yIGFuIGF0dGFjaG1lbnQgd2FzIGRlbGV0ZWQgb3IgdXBsb2FkZWQKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IGRlbGV0ZSBvciB1cGxvYWQKICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgUXVldWUgPT4gJEFwcHJvdmFsUXVldWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBJbmZvID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTGluayA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnU3lzQ29uZmlnU3ViR3JvdXA9Q29yZSUzQSUzQUFwcHJvdmFsO1N5c0NvbmZpZ0dyb3VwPUZBUScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIVE1MIG91dHB1dAogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgICAgIFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgICAgICAgID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5ldyBGQVEgYXJ0aWNsZQogICAgICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgRkFRIGNvdWxkIG5vdCBiZSBhZGRlZAogICAgICAgIGlmICggISRGQVFJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB3cml0ZSBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkSW5saW5lID0gMDsKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZQogICAgICAgICAgICAgICAgJElubGluZSA9IDE7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciBpZiB0aGlzIGlubGluZSBhdHRhY2htZW50IGlzIHVzZWQgaW4gYW55IEZBUSBhcnRpY2xlCiAgICAgICAgICAgICAgICBteSAkQ29udGVudElERm91bmQ7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhbGwgZmllbGRzIGZvciBjb250ZW50IGlkCiAgICAgICAgICAgICAgICBGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBGQVEgZmllbGQKICAgICAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAkR2V0UGFyYW17ICdGaWVsZCcgLiAkTnVtYmVyIH07CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBkbyBub3QgY29udGFpbiB0aGUgY29udGVudCBpZAogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgJEZpZWxkICF+IG17ICRBdHRhY2htZW50LT57Q29udGVudElEfSB9eG1zOwoKICAgICAgICAgICAgICAgICAgICAjIGZvdW5kIHRoZSBjb250ZW50IGlkCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJREZvdW5kID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZnVydGhlcgogICAgICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaC10ZXh0IGVkaXRvcgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQ29udGVudElERm91bmQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICBJbmxpbmUgPT4gJElubGluZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRGaWxlSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRJbmxpbmU7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH07CgogICAgICAgICAgICAjIHJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcwogICAgICAgICAgICBteSAkT0sgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRPSyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzIGZvciBGQVEgSXRlbSMgJyRGQVFJRCchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgZHluYW1pYyBmaWVsZHMKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIHNldCB0aGUgb2JqZWN0IElEIGRlcGVuZGluZyBvbiB0aGUgZmllbGQgY29uZmlndXJhdGlvbgogICAgICAgICAgICBteSAkT2JqZWN0SUQgPSAkRkFRSUQ7CgogICAgICAgICAgICAjIHNldCB0aGUgdmFsdWUKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkRkFRSUQgKTsKICAgIH0KfQoKc3ViIF9NYXNrTmV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICBteSAlRGF0YTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgdmFsaWQgc2VsZWN0aW9uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIHNldCBubyBzZXJ2ZXIgZXJyb3IgY2xhc3MgYXMgZGVmYXVsdAogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgYnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJFBhcmFte1VzZXJDYXRlZ29yaWVzTG9uZ05hbWVzfSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NhdGVnb3J5SUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUgJyAuICRQYXJhbXtDYXRlZ29yeUlEU2VydmVyRXJyb3J9LAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IHRoZSBsYW5ndWFnZSBsaXN0CiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZQogICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2U7CiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkTGFuZ3VhZ2VzeyAkUGFyYW17TGFuZ3VhZ2VJRH0gfSApIHsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZnJvbSBnaXZlbiBsYW5ndWFnZSBpZAogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyB1c2UgdGhlIHVzZXIgbGFuZ3VhZ2UsIG9yIGlmIG5vdCBmb3VuZCAnZW4nCiAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfSB8fCAnZW4nOwoKICAgICAgICAjIGdldCB1c2VyIGxhbmd1YWdlIElECiAgICAgICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgTGFuZHVhZ2VJRCBkb2VzIG5vdCBleGlzdHMKICAgICAgICBpZiAoICEkU2VsZWN0ZWRMYW5ndWFnZUlEICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGxvd2VzdCBsYW5ndWFnZSBJRAogICAgICAgICAgICBteSBATGFuZ3VhZ2VJRHMgPSBzb3J0IGtleXMgJUxhbmd1YWdlczsKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRMYW5ndWFnZUlEc1swXTsKCiAgICAgICAgICAgICMgc2V0IHRoZSBsYW5ndWFnZSB3aXRoIGxvd2VzdCBsYW5ndWFnZSBJRCBhcyBzZWxlY3RlZCBsYW5ndWFnZQogICAgICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7JFNlbGVjdGVkTGFuZ3VhZ2VJRH07CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgdGhlIGxhbmd1YWdlIHNlbGVjdGlvbgogICAgJERhdGF7TGFuZ3VhZ2VPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCB0aGUgc3RhdGVzIGxpc3QKICAgIG15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIHNlbGVjdGVkIHN0YXRlCiAgICBteSAkU2VsZWN0ZWRTdGF0ZTsKICAgIGlmICggJFBhcmFte1N0YXRlSUR9ICYmICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9ICkgewoKICAgICAgICAjIGdldCBzdGF0ZSBmcm9tIGdpdmVuIHN0YXRlIGlkCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBkZWZhdWx0IHN0YXRlCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6U3RhdGUnKSB8fCAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICB9CgogICAgIyBidWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uCiAgICAkRGF0YXtTdGF0ZU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ1N0YXRlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkU3RhdGUsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgc2hvdyBGQVEgYWRkIHNjcmVlbgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRQWRkJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIGZpZWxkCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgZGVmYXVsdCBsYW5ndWFnZQogICAgICAgIG15ICREZWZhdWx0TGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6TGFuZ3VhZ2UnKSB8fCAnZW4nOwoKICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlIElECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGRlZmF1bHQgbGFuZ3VhZ2UgaWYgaXQgd2FzIGRlbGV0ZWQgb3IgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIG15ICRJbnNlcnRMYW5ndWFnZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICREZWZhdWx0TGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRJbnNlcnRMYW5ndWFnZSApIHsKCiAgICAgICAgICAgICAgICAjIHJldHVybiB3aXRoIGVycm9yIHNjcmVlbgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBkZWZhdWx0IGxhbmd1YWdlIElECiAgICAgICAgICAgICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZhdWx0TGFuZ3VhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17TGFuZ3VhZ2VJRH0gPSAkTGFuZ3VhZ2VJRDsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGFwcHJvdmFsIGZpZWxkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBGQVEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcKICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJykgfHwgJyc7CgogICAgICAgICMgYnVpbGQgdGhlIGFwcHJvdmFsIHNlbGVjdGlvbiBpZiB1c2VyIGlzIGluIHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIGlmICggJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CgogICAgICAgICAgICAkRGF0YXtBcHByb3ZhbE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIDAgPT4gVHJhbnNsYXRhYmxlKCdObycpLAogICAgICAgICAgICAgICAgICAgIDEgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92YWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGhlIGF0dGFjaG1lbnQgdXBsb2FkIGJ1dHRvbgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFVwbG9hZCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgYXR0YWNobWVudHMKICAgIEFUVEFDSE1FTlQ6CiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyAkUGFyYW17QXR0YWNobWVudHN9IH0gKSB7CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGltYWdlcyBhcyBhdHRhY2htZW50cwogICAgICAgICMgKHRoZXkgaGF2ZSBhIGNvbnRlbnQgaWQpCiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50JywKICAgICAgICAgICAgRGF0YSA9PiAkQXR0YWNobWVudCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IgSmF2YVNjcmlwdAogICAgIyBvbmx5IGlmIGFjdGl2YXRlZCBhbmQgdGhlIGJyb3dzZXIgY2FuIGhhbmRsZSBpdAogICAgIyBvdGhlcndpc2UganVzdCBhIHRleHQtYXJlYSBpcyBzaG93bgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICkgewoKICAgICAgICAjIHVzZSBoZWlnaHQvd2lkdGggZGVmaW5lZCBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAkUGFyYW17UmljaFRleHRIZWlnaHR9ID0gJENvbmZpZy0+e1JpY2hUZXh0SGVpZ2h0fSB8fCAwOwogICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkQ29uZmlnLT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSaWNoVGV4dCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBIVE1MIHN0cmluZ3MgZm9ybSAkUGFyYW0KICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUFkZCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFDYXRlZ29yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtZXRlcnMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEIE5hbWUgUGFyZW50SUQgQ29tbWVudCBWYWxpZElEKSkgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGNhdGVnb3J5IGlkCiAgICAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0gfHw9IDA7CgogICAgIyBzZXQgZGVmYXVsdCBwYXJlbnQgaWQKICAgICRHZXRQYXJhbXtQYXJlbnRJRH0gfHw9IDA7CgogICAgIyBnZXQgYXJyYXkgcGFyYW1ldGVycwogICAgQHsgJEdldFBhcmFte1Blcm1pc3Npb25Hcm91cHN9IH0gPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnUGVybWlzc2lvbkdyb3VwcycgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2hhbmdlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlJyApIHsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJEdldFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgQ2F0ZWdvcnlJRCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBwZXJtaXNzaW9uIGdyb3VwcwogICAgICAgICRDYXRlZ29yeURhdGF7UGVybWlzc2lvbkdyb3Vwc30gPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdyb3VwR2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2hhbmdlIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFyZW50SUQgVmFsaWRJRCkpIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzIScsICRQYXJhbU5hbWUgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQKICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIEhUTUwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUV4aXN0c0FscmVhZHkgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgIFBhcmVudElEICAgPT4gJEdldFBhcmFte1BhcmVudElEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5KSB7CgogICAgICAgICAgICAjIHNldCBzZXJ2ZXIgZXJyb3JzCiAgICAgICAgICAgICRHZXRQYXJhbXtOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRHZXRQYXJhbXtOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cycpOwoKICAgICAgICAgICAgIyBIVE1MIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlVcGRhdGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJENhdGVnb3J5VXBkYXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBHcm91cElEcyAgID0+ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtOb3RpZmljYXRpb249VXBkYXRlIiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYXJlbnRJRCBWYWxpZElEKSkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcyEnLCAkUGFyYW1OYW1lICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE5hbWUgQ29tbWVudCBQZXJtaXNzaW9uR3JvdXBzKSkgewoKICAgICAgICAgICAgIyBpZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIHZhbGlkYXRpb24gY2xhc3MgYW5kIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdQZXJtaXNzaW9uR3JvdXBzJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQKICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbWlzc2luZwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBjYXRlZ29yeSBuYW1lIHdpdGggdGhlIHNhbWUgcGFyZW50IGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5RXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgdGhlIGVkaXQgc2NyZWVuIGFnYWluCiAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKCiAgICAgICAgICAgICMgc2V0IHNlcnZlciBlcnJvcnMKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEdldFBhcmFte05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzIScpOwoKICAgICAgICAgICAgIyBIVE1MIG91dHB1dAogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgbmV3IGNhdGVnb3J5CiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gJEdldFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O05vdGlmaWNhdGlvbj1BZGQiICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICkgewoKICAgICAgICAjIGdldCB0aGUgQ2F0ZWdvcnlJRAogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIGlmICggISRDYXRlZ29yeUlEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgIG15IEBBZmZlY3RlZEl0ZW1zID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiBbJENhdGVnb3J5SURdLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGFsbCBhZmZlY3RlZCBTdWJDY2F0ZWdvcmllcwogICAgICAgIG15ICRBZmZlY3RlZFN1YkNhdGVnb3JpZXMgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICAgICAgbXkgJERpYWxvZ1R5cGUgPSAnQ29uZmlybWF0aW9uJzsKCiAgICAgICAgIyBkaXNwbGF5IGxpc3Qgb2YgYWZmZWN0ZWQgRkFRIGFydGljbGVzIG9yIFN1YkNhdGVnb3JpZXMKICAgICAgICBpZiAoIEBBZmZlY3RlZEl0ZW1zIHx8IEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAjIHNldCB0aGUgZGlhbG9nIHR5cGUgdG8gaGF2ZSBvbmx5IDEgYnV0dG9uOiBPSwogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGlzcGxheSBBZmZlY3RlZCBGQVEgYXJ0aWNsZXMKICAgICAgICAgICAgaWYgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIEZBUSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkaXNwbGF5IEFmZmVjdGVkIFN1YmNhdGVnb3JpZXMKICAgICAgICAgICAgaWYgKCBAeyRBZmZlY3RlZFN1YkNhdGVnb3JpZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNhdGVnb3JpZXMgbG9uZyBuYW1lcwogICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRTdWJDYXRlZ29yaWVzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyRBZmZlY3RlZFN1YkNhdGVnb3JpZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgY2F0ZWdvcnkgbG9uZyBuYW1lCiAgICAgICAgICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtMb25nTmFtZX0gPSAkQ2F0ZWdvcnlMb25nTmFtZXMtPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISVDYXRlZ29yeURhdGE7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTm9BZmZlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGNvbnRlbnQKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBEaWFsb2dUeXBlID0+ICREaWFsb2dUeXBlLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIENhdGVnb3J5SUQKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeQogICAgICAgIG15ICRDb3VsZERlbGV0ZUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVDYXRlZ29yeSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBleHBsb3Jlciwgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUNhdGVnb3J5IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgIG15ICROb3RpZmljYXRpb24gICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05vdGlmaWNhdGlvbicgKSB8fCAnJzsKICAgICAgICBteSAlTm90aWZpY2F0aW9uVGV4dCA9ICgKICAgICAgICAgICAgVXBkYXRlID0+IFRyYW5zbGF0YWJsZSgnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJyksCiAgICAgICAgICAgIEFkZCAgICA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBjYXRlZ29yeSBhZGRlZCEnKSwKICAgICAgICApOwogICAgICAgIGlmICggJE5vdGlmaWNhdGlvbiAmJiAkTm90aWZpY2F0aW9uVGV4dHskTm90aWZpY2F0aW9ufSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoIEluZm8gPT4gJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyBvdmVydmlldwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAjIGdldCB0aGUgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICBteSAlRGF0YTsKCiAgICAjIGJ1aWxkIHRoZSB2YWxpZCBzZWxlY3Rpb24KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IGFsbCB2YWxpZCBncm91cHMKICAgIG15ICVHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMaXN0KAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgc2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0CiAgICAkUGFyYW17UGVybWlzc2lvbkdyb3Vwc1NlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBidWlsZCB0aGUgZ3JvdXAgc2VsZWN0aW9uCiAgICAkRGF0YXtHcm91cE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlR3JvdXBzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Blcm1pc3Npb25Hcm91cHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgID0+ICdWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUgJyAuICRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3J9LAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgICA9PiAkQ2F0ZWdvcnlUcmVlLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdQYXJlbnRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgICAgPT4gJFBhcmFte1BhcmVudElEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgIERpc2FibGVkQnJhbmNoID0+ICRDYXRlZ29yeVRyZWUtPnsgJFBhcmFte0NhdGVnb3J5SUR9IH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdVcGRhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBoZWFkZXIKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckVkaXQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyQWRkJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX092ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgb3ZlcnZpZXcgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkFkZCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgaWYgdGhlcmUgYXJlIGFueSBjYXRlZ29yaWVzLCB0aGV5IGFyZSBzaG93bgogICAgaWYgKCAkQ2F0ZWdvcnlUcmVlICYmIHJlZiAkQ2F0ZWdvcnlUcmVlIGVxICdIQVNIJyAmJiAleyRDYXRlZ29yeVRyZWV9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgICAgICMgc29ydCB0aGUgY2F0ZWdvcnkgaWRzIGJ5IHRoZSBsb25nIGNhdGVnb3J5IG5hbWUKICAgICAgICBteSBAQ2F0ZWdvcnlJRHNTb3J0ZWQgPSBzb3J0IHsgJENhdGVnb3J5VHJlZS0+eyRhfSBjbXAgJENhdGVnb3J5VHJlZS0+eyRifSB9IGtleXMgJXskQ2F0ZWdvcnlUcmVlfTsKCiAgICAgICAgIyBzaG93IGFsbCBjYXRlZ29yaWVzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHNTb3J0ZWQpIHsKCiAgICAgICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdmFsaWQgc3RyaW5nIGJhc2VkIG9uIFZhbGlkSUQKICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkQ2F0ZWdvcnlEYXRhe1ZhbGlkSUR9IH07CgogICAgICAgICAgICAjIG92ZXJ3cml0ZSB0aGUgbmFtZSB3aXRoIHRoZSBsb25nIG5hbWUKICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtOYW1lfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBuZWVkZWQgSXRlbSBpZAogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3J3JywKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5IScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZQogICAgICAgIG15ICRDb3VsZERlbGV0ZUl0ZW0gPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVJdGVtKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bAogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kRkFRRGF0YXtDYXRlZ29yeUlEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IGVycm9yIG1lc3NhZ2UsIHdoZW4gZGVsZXRlIGZhaWxlZAogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJywKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGRpYWxvZyB0eXBlLiBBcyBkZWZhdWx0LCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgIyBvdXRwdXQgY29udGVudAogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtZXRlcnMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICBxdyhJdGVtSUQgVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdydycsCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvcm0gaHR0cCByZXF1ZXN0CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvcm0gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVwbG9hZCBjYWNoZSBvYmplY3QKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgIyBnZXQgZm9ybSBpZAogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CgogICAgIyBjcmVhdGUgZm9ybSBpZAogICAgaWYgKCAhJEZvcm1JRCApIHsKICAgICAgICAkRm9ybUlEID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICAjIGdldCBzY3JlZW4gdHlwZQogICAgbXkgJFNjcmVlblR5cGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAnJzsKCiAgICAjIGdldCBxdWV1ZSBvYmplY3QKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyB0aGUgRkFRIGVkaXQgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIG15ICRPdXRwdXQ7CgogICAgICAgICMgc2hvdyBhIHBvcC11cCBzY3JlZW4KICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIHNtYWxsIHBvcC11cCBzY3JlZW4gaGVhZGVyCiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyBhIG5vcm1hbCB3aW5kb3cKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgbm9ybWFsIHNjcmVlbiBoZWFkZXIgd2l0aCBuYXZpZ2F0aW9uIGJhcgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgKHdpdGhvdXQgaW5saW5lIGF0dGFjaG1lbnRzKQogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY29weSBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgdG8gdXBsb2FkIGNhY2hlCiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IGNvbnRlbnQgZGlzcG9zaXRpb24gKGlmIGl0cyBhbiBpbmxpbmUgYXR0YWNobWVudCkKICAgICAgICAgICAgbXkgJERpc3Bvc2l0aW9uID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9ID8gJ2lubGluZScgOiAnJzsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGV7Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAkRGlzcG9zaXRpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CgogICAgICAgICMgcmV3cml0ZSBvbGQgc3R5bGUgaW5saW5lIGltYWdlIFVSTHMKICAgICAgICBGSUVMRDoKICAgICAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKCiAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24sIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9ID1+IHN7CiAgICAgICAgICAgICAgICBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgdG8gc3RvcmUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIGRhdGFiYXNlIChvciB1bmRlZmluZWQpCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICMgZ2V0IGZpZWxkIEhUTUwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgIyBnZXQgQXBwcm92YWwgcXVldWUgbmFtZQogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRBcHByb3ZhbFF1ZXVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMKICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gIkZBUSBBcHByb3ZhbCBpcyBlbmFibGVkIGJ1dCBxdWV1ZSAnJEFwcHJvdmFsUXVldWUnIGRvZXMgbm90IGV4aXN0cyIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAuICdTeXNDb25maWdTdWJHcm91cD1Db3JlJTNBJTNBQXBwcm92YWw7U3lzQ29uZmlnR3JvdXA9RkFRJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgU2NyZWVuVHlwZSAgICAgICA9PiAkU2NyZWVuVHlwZSwKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgYSBwb3AtdXAgc2NyZWVuIGZvb3RlcgogICAgICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kU21hbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICAgICAgfQoKICAgICAgICAjIHNob3cgYSBub3JtYWwgZm9vdGVyCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2F2ZSB0aGUgRkFRCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQ7CgogICAgICAgICMgc2hvdyBhIHBvcC11cCBzY3JlZW4KICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIHNtYWxsIHBvcC11cCBzY3JlZW4gaGVhZGVyCiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyBhIG5vcm1hbCB3aW5kb3cKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgbm9ybWFsIHNjcmVlbiBoZWFkZXIgd2l0aCBuYXZpZ2F0aW9uIGJhcgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIGlmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJRHMgPSBtYXAgewogICAgICAgICAgICBteSAoJElEKSA9ICRfID1+IG17IFxBIEF0dGFjaG1lbnREZWxldGUgKFxkKykgXHogfXhtczsKICAgICAgICAgICAgJElEID8gJElEIDogKCk7CiAgICAgICAgfSAkUGFyYW1PYmplY3QtPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yIG15ICRDb3VudCAoIHJldmVyc2Ugc29ydCBAQXR0YWNobWVudElEcyApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGRlbGV0ZSBidXR0b24gd2FzIHByZXNzZWQgZm9yIHRoaXMgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkQ291bnQiICk7CgogICAgICAgICAgICAjIGNoZWNrIG5leHQgYXR0YWNobWVudCBpZiBpdCB3YXMgbm90IHByZXNzZWQKICAgICAgICAgICAgbmV4dCBDT1VOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAgICAgJEVycm9ye0F0dGFjaG1lbnR9ID0gMTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0F0dGFjaG1lbnRVcGxvYWQnICkgKSB7CgogICAgICAgICAgICAjIHJlbWVtYmVyIHRoYXQgd2UgbmVlZCB0byBzaG93IHRoZSBwYWdlIGFnYWluCiAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICAgICAjIGdldCB0aGUgdXBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdDsKCiAgICAgICAgICAgICMgZG8gbm90IHZhbGlkYXRlIG9uIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgICAgIGlmICggISRFcnJvcntBdHRhY2htZW50fSApIHsKCiAgICAgICAgICAgICAgICAkVmFsaWRhdGlvblJlc3VsdCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgICAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICB8fCAnJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkVmFsaWRhdGlvblJlc3VsdC0+e0Vycm9yTWVzc2FnZX0gfHwgJycsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICAjIG9yIGFuIGF0dGFjaG1lbnQgd2FzIGRlbGV0ZWQgb3IgdXBsb2FkZWQKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IGRlbGV0ZSBvciB1cGxvYWQKICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEFwcHJvdmFsIHF1ZXVlIG5hbWUKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cwogICAgICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgUXVldWUgPT4gJEFwcHJvdmFsUXVldWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzCiAgICAgICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBJbmZvID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTGluayA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXNDb25maWc7U3ViYWN0aW9uPUVkaXQ7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnU3lzQ29uZmlnU3ViR3JvdXA9Q29yZSUzQSUzQUFwcHJvdmFsO1N5c0NvbmZpZ0dyb3VwPUZBUScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIVE1MIG91dHB1dAogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICBTY3JlZW5UeXBlICAgICAgID0+ICRTY3JlZW5UeXBlLAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiBcJUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgYSBwb3AtdXAgc2NyZWVuIGZvb3RlcgogICAgICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kU21hbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyBhIG5vcm1hbCBmb290ZXIKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBjb250ZW50IHR5cGUKICAgICAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICkgewogICAgICAgICAgICAkQ29udGVudFR5cGUgPSAndGV4dC9odG1sJzsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBuZXcgRkFRIGFydGljbGUKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgRkFRIGNvdWxkIG5vdCBiZSB1cGRhdGVkCiAgICAgICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CgogICAgICAgICMgR2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cy4KICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIExvb2t1cCBvbGQgaW5saW5lIGF0dGFjaG1lbnRzIChpbml0aWFsbHkgbG9hZGVkIHRvIEFnZW50RkFRRWRpdC5wbSBzY3JlZW4pCiAgICAgICAgIyBhbmQgcHVzaCB0byBBdHRhY2htZW50cyBhcnJheSBpZiB0aGV5IHN0aWxsIGV4aXN0IGluIHRoZSBmb3JtLgogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQXR0YWNobWVudC0+e0lubGluZX07CgogICAgICAgICAgICBOVU1CRVI6CiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXsgJ0ZpZWxkJyAuICROdW1iZXIgfQogICAgICAgICAgICAgICAgICAgID1+IG17IEFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH07RmlsZUlEPSRBdHRhY2htZW50LT57RmlsZUlEfSB9bXN4CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIEdldCB0aGUgZXhpc3RpbmcgaW5saW5lIGF0dGFjaG1lbnQgZGF0YS4KICAgICAgICAgICAgICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZXtDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGV7Q29udGVudFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICRGaWxle0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBsYXN0IE5VTUJFUjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBCdWlsZCBhIGxvb2t1cCBoYXNoIG9mIHRoZSBuZXcgYXR0YWNobWVudHMuCiAgICAgICAgbXkgJU5ld0F0dGFjaG1lbnQ7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAjIGFwcGVuZCBjb250ZW50IGlkIGlmIGF2YWlsYWJsZSAoZm9yIG5ldyBpbmxpbmUgaW1hZ2VzKQogICAgICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSApIHsKICAgICAgICAgICAgICAgICRLZXkgLj0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0b3JlIGFsbCBvZiB0aGUgbmV3IGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICAkTmV3QXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50OwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB0aGUgZXhpc3RpbmcgYXR0YWNobWVudHMuCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgIyBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplcmF3ICsgY29udGVudCB0eXBlIChubyBjb250ZW50IGlkLCBhcyBleGlzdGluZyBhdHRhY2htZW50cyBkb24ndCBoYXZlIGl0KS4KICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57RmlsZXNpemVSYXd9CiAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgIyBhdHRhY2htZW50IGlzIGFscmVhZHkgZXhpc3RpbmcsIHdlIGNhbiBkZWxldGUgaXQgZnJvbSB0aGUgbmV3IGF0dGFjaG1lbnQgaGFzaAogICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRoZSBleGlzdGluZyBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB3cml0ZSB0aGUgbmV3IGF0dGFjaG1lbnRzCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCB2YWx1ZXMgJU5ld0F0dGFjaG1lbnQgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYW4gaW5saW5lIGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZQogICAgICAgICAgICAgICAgJElubGluZSA9IDE7CgogICAgICAgICAgICAgICAgIyBSZW1lbWJlciBpZiB0aGlzIGlubGluZSBhdHRhY2htZW50IGlzIGFscmVhZHkgdXNlZCBpbiBhbnkgRkFRIGl0ZW0uCiAgICAgICAgICAgICAgICBteSAkSW5saW5lQXR0YWNobWVudEZvdW5kOwoKICAgICAgICAgICAgICAgICMgQ2hlY2sgYWxsIGZpZWxkcyBmb3IgdGhlIGlubGluZSBhdHRhY2htZW50LgogICAgICAgICAgICAgICAgTlVNQkVSOgogICAgICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBmaWVsZAogICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZCA9ICRHZXRQYXJhbXsgJ0ZpZWxkJyAuICROdW1iZXIgfTsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IGZpZWxkcwogICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgU2tpcCBpZiB0aGUgZmllbGQgaXMgbm90IG5ldyAoYWRkZWQpIG9yIG9sZCAoaW5pdGlhbGx5IGxvYWRlZCkgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGQgIX4gbXsgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9IH14bXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICF+IG17IEFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH07RmlsZUlEPSRBdHRhY2htZW50LT57RmlsZUlEfSB9eG1zCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCB0aGUgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgJElubGluZUF0dGFjaG1lbnRGb3VuZCA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBsYXN0IE5VTUJFUjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCB3YW50IHRvIGtlZXAgdGhpcyBhdHRhY2htZW50LCBiZWNhdXNlIGl0IHdhcyBkZWxldGVkIGluIHRoZSByaWNoLXRleHQgZWRpdG9yLgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkSW5saW5lQXR0YWNobWVudEZvdW5kOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBJbmxpbmUgPT4gJElubGluZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRGaWxlSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRJbmxpbmU7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH07CgogICAgICAgICAgICAjIHJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcwogICAgICAgICAgICBteSAkT0sgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJE9LICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgRkFRIEl0ZW0jICckR2V0UGFyYW17SXRlbUlEfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRGb3JtSUQgKTsKCiAgICAgICAgIyBzZXQgZHluYW1pYyBmaWVsZHMKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIHNldCB0aGUgb2JqZWN0IElEIGRlcGVuZGluZyBvbiB0aGUgZmllbGQgY29uZmlndXJhdGlvbgogICAgICAgICAgICBteSAkT2JqZWN0SUQgPSAkR2V0UGFyYW17SXRlbUlEfTsKCiAgICAgICAgICAgICMgc2V0IHRoZSB2YWx1ZQogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlmIHdlIG5lZWQgdG8gY2xvc2UgYSBwb3AtdXAgc2NyZWVuIG9yIG5vdAogICAgICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICBVUkwgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kR2V0UGFyYW17SXRlbUlEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCB2YWxpZCBzZWxlY3Rpb24KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9ICRGQVFPYmplY3QtPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0CiAgICAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBidWlsZCBjYXRlZ29yeSBzZWxlY3Rpb24KICAgICREYXRhe0NhdGVnb3J5T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBUcmVlVmlldyAgICAgPT4gJFRyZWVWaWV3LAogICAgKTsKCiAgICAjIGdldCB0aGUgbGFuZ3VhZ2UgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UKICAgIG15ICRTZWxlY3RlZExhbmd1YWdlOwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICMgZ2V0IGxhbmd1YWdlIGZyb20gZ2l2ZW4gbGFuZ3VhZ2UgaWQKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgdXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJwogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX0gfHwgJ2VuJzsKCiAgICAgICAgIyBnZXQgdXNlciBsYW5ndWFnZSBJRAogICAgICAgIG15ICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIExhbmd1YWdlSUQgZG9lcyBub3QgZXhpc3RzLgogICAgICAgIGlmICggISRTZWxlY3RlZExhbmd1YWdlSUQgKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbG93ZXN0IGxhbmd1YWdlIElECiAgICAgICAgICAgIG15IEBMYW5ndWFnZUlEcyA9IHNvcnQga2V5cyAlTGFuZ3VhZ2VzOwogICAgICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZUlEID0gJExhbmd1YWdlSURzWzBdOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGxhbmd1YWdlIHdpdGggbG93ZXN0IGxhbmd1YWdlIElEIGFzIHNlbGVjdGVkIGxhbmd1YWdlCiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3skU2VsZWN0ZWRMYW5ndWFnZUlEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uCiAgICAkRGF0YXtMYW5ndWFnZU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0xhbmd1YWdlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IHRoZSBzdGF0ZXMgbGlzdAogICAgbXkgJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgc2VsZWN0ZWQgc3RhdGUKICAgIG15ICRTZWxlY3RlZFN0YXRlOwogICAgaWYgKCAkUGFyYW17U3RhdGVJRH0gJiYgJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH0gKSB7CgogICAgICAgICMgZ2V0IHN0YXRlIGZyb20gZ2l2ZW4gc3RhdGUgaWQKICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGRlZmF1bHQgc3RhdGUKICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpEZWZhdWx0OjpTdGF0ZScpIHx8ICdpbnRlcm5hbCAoYWdlbnQpJzsKICAgIH0KCiAgICAjIGJ1aWxkIHRoZSBzdGF0ZSBzZWxlY3Rpb24KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRTdGF0ZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBnZXQgc2NyZWVuIHR5cGUKICAgIG15ICRTY3JlZW5UeXBlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NjcmVlblR5cGUnICkgfHwgJyc7CgogICAgbXkgJEZpZWxkc2V0Q2xhc3MgPSAnJzsKICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKICAgICAgICAkRmllbGRzZXRDbGFzcyA9ICdGaXhlZExhYmVsJzsKICAgIH0KCiAgICAjIHNob3cgRkFRIGVkaXQgc2NyZWVuCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFFZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgRmllbGRzZXRDbGFzcyA9PiAkRmllbGRzZXRDbGFzcywKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIGZpZWxkCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9MYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgYXBwcm92YWwgZmllbGQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICAgICAgbXkgJUdyb3VwcyA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIEZBUSBhcHByb3ZhbCBncm91cCBmcm9tIGNvbmZpZwogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBidWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgMCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgIDEgPT4gJ1llcycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRoZSBhdHRhY2htZW50IHVwbG9hZCBidXR0b24KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRVcGxvYWQnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgc2hvdyBhdHRhY2htZW50cwogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBpbmxpbmUgaW1hZ2VzIGFzIGF0dGFjaG1lbnRzCiAgICAgICAgIyAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnQnLAogICAgICAgICAgICBEYXRhID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvciBKYXZhU2NyaXB0CiAgICAjIG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjIG90aGVyd2lzZSBqdXN0IGEgdGV4dC1hcmVhIGlzIHNob3duCiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JpY2hUZXh0JywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBEeW5hbWljIGZpZWxkcwogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIEhUTUwgc3RyaW5ncyBmb3JtICRQYXJhbQogICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRTY3JlZW5UeXBlIG5lICdQb3B1cCcgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0VuZFNtYWxsJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFFZGl0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgIG15ICRTdGFydEhpdCAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgNTAwOwogICAgbXkgJEZpbHRlciAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRWaWV3ICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwogICAgbXkgJFNvcnRCeSAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXZlcnNlIHRoZSBoYXMgZm9yIGVhc3kgbG9va3VwCiAgICAgICAgbXkgJVJldmVyc2VDYXRlZ29yeVRyZWUgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgICRDYXRlZ29yeUlEID0gJFJldmVyc2VDYXRlZ29yeVRyZWV7JENhdGVnb3J5fSB8fCAwOwogICAgfQoKICAgICMgZ2V0IG5hdmlnYXRpb24gYmFyIG9wdGlvbgogICAgbXkgJE5hdiA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYXYnICkgfHwgJyc7CgogICAgIyBnZXQgc2Vzc2lvbiBvYmplY3QKICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgIyBzYXZlIGNhdGVnb3J5IGlkIHRvIHNlc3Npb24sIHRvIGJlIHVzZWQgaW4gRkFRIGFkZCBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RWaWV3ZWRDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgICAgID0+ICRDYXRlZ29yeUlELAogICAgKTsKCiAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuIChmb3IgYmFjayBtZW51IGFjdGlvbikKICAgICMgYnV0IG9ubHkgaWYgdGhlIEZBUSBleHBsb3JlciBpcyBub3Qgc2hvd24gYXMgb3ZlcmxheQogICAgaWYgKCAhJE5hdiB8fCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtTb3J0Qnk9JFNvcnRCeSIKICAgICAgICAgICAgLiAiO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQ7TmF2PSROYXYiCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSRPcmRlckJ5O1N0YXJ0SGl0PSRTdGFydEhpdCI7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgfQoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAjIGdldCBjYXRlZ29yeSBkYXRhCiAgICAgICAgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nLCAkQ2F0ZWdvcnlJRCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZQogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIgc21hbGwgYW5kIG5vIE5hdmlnYXRpb24gYmFyCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIGFuZCBuYXZpZ2F0aW9uIGJhcgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJEZBUU9iamVjdC0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBpdGVtcyAodmFsaWQgYW5kIGludmFsaWQpIGlmIFN5U0NvbmZpZyBpcyBzZXQKICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgQFZhbGlkSURzOwogICAgbXkgJFZhbGlkID0gMTsKICAgIGlmICggJENvbmZpZy0+e1Nob3dJbnZhbGlkRkFRSXRlbXN9ICkgewogICAgICAgIG15ICVWYWxpZExpc3QgPSAkVmFsaWRPYmplY3QtPlZhbGlkTGlzdCgpOwogICAgICAgIEBWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKICAgICAgICAkVmFsaWQgICAgPSAwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFZhbGlkSURzID0gKCAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKCBWYWxpZCA9PiAndmFsaWQnICkgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzCiAgICBpZiAoICRDYXRlZ29yeUlEc1JlZiAmJiByZWYgJENhdGVnb3J5SURzUmVmIGVxICdBUlJBWScgJiYgQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAjIHNob3cgZGF0YSBmb3IgZWFjaCBzdWJjYXRlZ29yeQogICAgICAgIGZvciBteSAkU3ViQ2F0ZWdvcnlJRCAoIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVTdWJDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2Ygc3ViY2F0ZWdvcmllcyBvZiB0aGlzIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe0FydGljbGVDb3VudH0gPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMCwKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICA9PiAkVmFsaWQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJE5hdiwKICAgICAgICAgICAgICAgICAgICAlU3ViQ2F0ZWdvcnlEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggYWxsIEZBUSBhcnRpY2xlcyB3aXRoaW4gdGhlIGdpdmVuIGNhdGVnb3J5CiAgICBteSBAVmlld2FibGVGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgICAgIFZhbGlkSURzICAgICAgICAgPT4gXEBWYWxpZElEcywKICAgICk7CgogICAgIyBidWlsZCBuZWNlc3Nhcnkgc3R1ZmYgZm9yIHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRGaWx0ZXIpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwoKICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgIG15IEBTaG93Q29sdW1uczsKICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBlbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rCiAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHRoZSB0aXRsZSB2YWx1ZSAob24gdG9wIG9mIHRoZSBhcnRpY2xlIGxpc3QpCiAgICBteSAkVGl0bGUgPSAkQ2F0ZWdvcnlEYXRhe05hbWV9CiAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUnKQogICAgICAgIHx8ICcnOwoKICAgICMgYnVpbGQgdGhlIEhUTUwgZm9yIHRoZSBsaXN0IG9mIEZBUSBhcnRpY2xlcyBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15ICRGQVFJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICBGQVFJRHMgICAgID0+IFxAVmlld2FibGVGQVFJRHMsCiAgICAgICAgVG90YWwgICAgICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAogICAgICAgIFZpZXcgICAgICAgPT4gJFZpZXcsCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICBMaW5rRmlsdGVyID0+ICRGaWx0ZXJMaW5rLAoKICAgICAgICBUaXRsZU5hbWUgID0+IFRyYW5zbGF0YWJsZSgnRkFRIEFydGljbGVzJyksCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkVGl0bGUsCgogICAgICAgIExpbWl0ICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgRmlsdGVyICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgRmlsdGVyTGluayAgID0+ICRGaWx0ZXJMaW5rLAogICAgICAgIE9yZGVyQnkgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBTaG93Q29sdW1ucyAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBPdXRwdXQgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgPT4gJE5hdiwKICAgICAgICBGQVFUaXRsZVNpemUgPT4gJENvbmZpZy0+e1RpdGxlU2l6ZX0sCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGQVFJdGVtTGlzdEhUTUwgPT4gJEZBUUl0ZW1MaXN0SFRNTCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNldCBRdWlja1NlYXJjaCBtb2RlCiAgICBteSAkTW9kZSA9ICdBZ2VudCc7CiAgICBpZiAoICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRNb2RlID0gJ0FnZW50U21hbGwnOwogICAgfQoKICAgICMgc2hvdyBRdWlja1NlYXJjaAogICAgJExheW91dE9iamVjdC0+RkFRU2hvd1F1aWNrU2VhcmNoKAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAkTW9kZSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAkTmF2LAogICAgKTsKCiAgICBteSAlSW5mb0JveFJlc3VsdHM7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIHRoZSBOZXdzQm94UmVzdWx0CiAgICAgICAgJEluZm9Cb3hSZXN1bHRzeyRUeXBlfSA9ICRTaG93T2s7CiAgICB9CgogICAgIyBzaG93IHRvcCB0ZW4gYXJ0aWNsZXMKICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgICMgY2hlY2sgZXJyb3IKICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBzdG9yZSB0aGUgTmV3c0JveFJlc3VsdAogICAgJEluZm9Cb3hSZXN1bHRze1RvcDEwfSA9ICRTaG93T2s7CgogICAgIyBzZXQgdGhlIFNpZGViYXIgd2lkdGgKICAgIG15ICRTaWRlYmFyQ2xhc3MgPSAnTGFyZ2UnOwoKICAgICMgY2hlY2sgaWYgYWxsIEluZm9Cb3hlcyBhcmUgZW1wdHkgYW5kIGhpZGUgdGhlIFNpZGViYXIKICAgIGlmICgKICAgICAgICAkSW5mb0JveFJlc3VsdHN7TGFzdENyZWF0ZX0gZXEgLTEKICAgICAgICAmJiAkSW5mb0JveFJlc3VsdHN7TGFzdENoYW5nZX0gZXEgLTEKICAgICAgICAmJiAkSW5mb0JveFJlc3VsdHN7VG9wMTB9IGVxIC0xCiAgICAgICAgKQogICAgewogICAgICAgICRTaWRlYmFyQ2xhc3MgPSAnSGlkZGVuJzsKICAgIH0KCiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJFNpZGViYXJDbGFzcyA9ICdNZWRpdW0nOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBTaWRlYmFyQ2xhc3MgPT4gJFNpZGViYXJDbGFzcywKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgfQoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgbmVlZGVkIEl0ZW0gaWQKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CgogICAgICAgICMgZXJyb3IgcGFnZQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdybycsCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBhcnRpY2xlIGhpc3RvcnkKICAgIG15ICRIaXN0b3J5ID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUdldCgKICAgICAgICBJdGVtSUQgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBmb3IgbXkgJEhpc3RvcnlFbnRyeSAoIEB7JEhpc3Rvcnl9ICkgewoKICAgICAgICAjIHJlcGxhY2UgSUQgdG8gZnVsbCB1c2VyIG5hbWUgb24gQ3JlYXRlZEJ5IGtleQogICAgICAgIG15ICVVc2VyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkSGlzdG9yeUVudHJ5LT57Q3JlYXRlZEJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkSGlzdG9yeUVudHJ5LT57Q3JlYXRlZEJ5fSA9ICIkVXNlcntVc2VyTG9naW59ICgkVXNlcntVc2VyRmlyc3RuYW1lfSAkVXNlcntVc2VyTGFzdG5hbWV9KSI7CgogICAgICAgICMgY2FsbCBSb3cgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFR5cGUgID0+ICdTbWFsbCcsCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdGQVEgSGlzdG9yeScpLAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUhpc3RvcnknLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgam91cm5hbCBsaW1pdCBkYXRhCiAgICBteSAkSm91cm5hbExpbWl0ID0gJENvbmZpZy0+e0pvdXJuYWxMaW1pdH0gfHwgNTAwOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEpvdXJuYWwgZW50cmllcwogICAgbXkgJEpvdXJuYWwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkhpc3RvcnlHZXQoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZUNvbHVtbiA9ICV7ICRDb25maWctPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQoKICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBKb3VybmFsJyksCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBvdXRwdXQgSm91cm5hbAogICAgJE91dHB1dCAuPSAkU2VsZi0+X0ZBUUpvdXJuYWxTaG93KAogICAgICAgIEpvdXJuYWwgICAgICAgICAgPT4gJEpvdXJuYWwsCiAgICAgICAgVG90YWwgICAgICAgICAgICA9PiBzY2FsYXIgQHskSm91cm5hbH0sCiAgICAgICAgVGl0bGVOYW1lICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBKb3VybmFsJyksCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkSm91cm5hbExpbWl0LAogICAgICAgIFNob3dDb2x1bW5zICAgICAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBKb3VybmFsVGl0bGVTaXplID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgKTsKCiAgICAjIGJ1aWxkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFKb3VybmFsU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGZyb250ZW5kCiAgICBteSAkRnJvbnRlbmQgPSAnQWdlbnQnOwoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBnZXQgc2Vzc2lvbiBvYmplY3QKICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBWYWx1ZSAgICAgPT4gJFZpZXcsCiAgICApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgYmFja2VuZCBmcm9tIGNvbmZpZwogICAgbXkgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldycpLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgaGFzaC1yZWYKICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnLCAkVmlldyApLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXZpZ2F0aW9uIGJhcgogICAgbXkgJFN0YXJ0SGl0ID0gaW50KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwoKICAgICMgYnVpbGQgc2hvd24gRkFRIGFydGljbGVzIG9uIGEgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKQogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkUGFyYW17UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciBjb250ZW50CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIGxvb3Agb3ZlciBjb25maWd1cmVkIGJhY2stZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciB2aWV3IG1vZGUKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjdXJyZW50IHZpZXcgaXMgY29uZmlndXJlZCBpbiBiYWNrZW5kCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHBhZ2UgbmF2aWdhdGlvbiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIEZBUSBoaXN0b3J5KSwKICAgICAgICAjIGJlY2F1c2UgdGhlIHN1Ym1pdCB3aXRoIHBhZ2UgcmVsb2FkIHdpbGwgbm90IHdvcmsgdGhlcmUKICAgICAgICBpZiAoICEkUGFyYW17QUpBWH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgSFRNTCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICRPdXRwdXROYXZCYXI7CgogICAgIyBsb2FkIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JFNlbGZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgICAgIFRpdGxlU2l6ZSA9PiAkUGFyYW17Sm91cm5hbFRpdGxlU2l6ZX0sCiAgICApOwoKICAgICRPdXRwdXRSYXcgLj0gJE91dHB1dDsKCiAgICAjIGNyZWF0ZSBvdmVydmlldyBuYXZpZ2F0aW9uIGJhcgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgcmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlCiAgICByZXR1cm4gJE91dHB1dFJhdzsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFMYW5ndWFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICVHZXRQYXJhbTsKCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRGQVFPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgJiYgJE11bHRpTGFuZ3VhZ2UgKSB7CgogICAgICAgICMgZ2V0IHRoZSBMYW5ndWFnZUlECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZGF0YQogICAgICAgIG15ICVMYW5ndWFnZURhdGEgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgb3V0cHV0IGNoYW5nZSBsYW5ndWFnZSBzY3JlZW4KICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgJUxhbmd1YWdlRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZSBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBjaGVjayBmb3IgbmFtZSBhbmQgbGFuZ3VhZ2UgaWQKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTGFuZ3VhZ2VJRCBOYW1lKSkgewoKICAgICAgICAgICAgIyBzdG9yZSBuZWVkZWQgcGFyYW1ldGVycyBpbiAlR2V0UGFyYW0gdG8gbWFrZSBpdCByZS1sb2FkYWJsZQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBIVE1MIG91dHB1dAogICAgICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgbmFtZSBpcyByZXF1aXJlZCEnKSwKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBsYW5ndWFnZSBuYW1lCiAgICAgICAgbXkgJExhbmd1YWdlRXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHRoZSBlZGl0IHNjcmVlbiBhZ2FpbgogICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CgogICAgICAgICAgICAjIEhUTUwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3IgICAgICAgID0+ICdTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgICAgICBOYW1lU2VydmVyRXJyb3JNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnKSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgbGFuZ3VhZ2UKICAgICAgICBteSAkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJExhbmd1YWdlVXBkYXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O05vdGlmaWNhdGlvbj1VcGRhdGUiICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIGdldCB0aGUgbmV3IG5hbWUKICAgICAgICAkR2V0UGFyYW17TmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZCBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBnZXQgdGhlIG5hbWUKICAgICAgICAkR2V0UGFyYW17TmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgbmFtZQogICAgICAgIGlmICggISRHZXRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgICAgICMgSFRNTCBvdXRwdXQKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvciAgICAgICAgPT4gJ1NlcnZlckVycm9yJywKICAgICAgICAgICAgICAgIE5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgbmFtZSBpcyByZXF1aXJlZCEnKSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGUgbGFuZ3VhZ2UgbmFtZQogICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICBOYW1lICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyB0aGUgZWRpdCBzY3JlZW4gYWdhaW4KICAgICAgICBpZiAoJExhbmd1YWdlRXhpc3RzQWxyZWFkeSkgewogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgID0+ICdBZGQnLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yICAgICAgICA9PiAnU2VydmVyRXJyb3InLAogICAgICAgICAgICAgICAgTmFtZVNlcnZlckVycm9yTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJyksCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmb290ZXIKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5ldyBsYW5ndWFnZQogICAgICAgIG15ICRMYW5ndWFnZUFkZFN1Y2Nlc3NmdWwgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VBZGRTdWNjZXNzZnVsICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07Tm90aWZpY2F0aW9uPUFkZCIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgJiYgJE11bHRpTGFuZ3VhZ2UgKSB7CgogICAgICAgICMgZ2V0IHRoZSBMYW5ndWFnZUlECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgZGF0YQogICAgICAgIG15ICVMYW5ndWFnZURhdGEgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJUxhbmd1YWdlRGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICBteSBAQWZmZWN0ZWRJdGVtcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyRMYW5ndWFnZUlEXSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNhbGwgRGVsZXRlIGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICAgICAgbXkgJERpYWxvZ1R5cGUgPSAnQ29uZmlybWF0aW9uJzsKCiAgICAgICAgIyBkaXNwbGF5IGxpc3Qgb2YgYWZmZWN0ZWQgRkFRIGFydGljbGVzCiAgICAgICAgaWYgKEBBZmZlY3RlZEl0ZW1zKSB7CgogICAgICAgICAgICAjIHNldCB0aGUgZGlhbG9nIHR5cGUgdG8gaGF2ZSBvbmx5IDEgYnV0dG9uOiBPSwogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBGQVEgYXJ0aWNsZQogICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXNSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslTGFuZ3VhZ2VEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGNvbnRlbnQKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBEaWFsb2dUeXBlID0+ICREaWFsb2dUeXBlLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBnZXQgdGhlIExhbmd1YWdlSUQKICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApIHx8ICcnOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYW5ndWFnZSBkYXRhCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElTGFuZ3VhZ2VEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSBsYW5ndWFnZQogICAgICAgIG15ICRDb3VsZERlbGV0ZUxhbmd1YWdlID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEZWxldGUoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVMYW5ndWFnZSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBleHBsb3Jlciwgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUxhbmd1YWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgIG15ICROb3RpZmljYXRpb24gICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05vdGlmaWNhdGlvbicgKSB8fCAnJzsKICAgICAgICBteSAlTm90aWZpY2F0aW9uVGV4dCA9ICgKICAgICAgICAgICAgVXBkYXRlID0+IFRyYW5zbGF0YWJsZSgnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJyksCiAgICAgICAgICAgIEFkZCAgICA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBsYW5ndWFnZSBhZGRlZCEnKSwKICAgICAgICApOwogICAgICAgIGlmICggJE5vdGlmaWNhdGlvbiAmJiAkTm90aWZpY2F0aW9uVGV4dHskTm90aWZpY2F0aW9ufSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoIEluZm8gPT4gJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkxpc3QnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2hvd3MgaGVhZGVyCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJFZGl0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckFkZCcsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9PdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQgPSAnJzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IG92ZXJ2aWV3IGJsb2NrcwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25BZGQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgICAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBsYW5ndWFnZXMsIHRoZXkgYXJlIHNob3duCiAgICAgICAgaWYgKCVMYW5ndWFnZXMpIHsKICAgICAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggc29ydCB7ICRMYW5ndWFnZXN7JGF9IGNtcCAkTGFuZ3VhZ2VzeyRifSB9IGtleXMgJUxhbmd1YWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBsYW5ndWFnZXMgcmVzdWx0CiAgICAgICAgICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgI291dHB1dCByZXN1bHRzCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUxhbmd1YWdlRGF0YX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEaXNhYmxlZCcsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5IScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbGluayBvYmplY3QKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkTGlua09iamVjdC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaW5rIGRhdGEKICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgIyBubyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIEhUTUwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCB1c2VyIGluZm8gKENyZWF0ZWRCeSkKICAgIG15ICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIGdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkKICAgICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q2hhbmdlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDaGFuZ2VkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgZ2VuZXJhdGUgUERGIG91dHB1dAogICAgbXkgJFByaW50ZWRCeSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgncHJpbnRlZCBieScpOwogICAgbXkgJFRpbWUgICAgICA9ICRMYXlvdXRPYmplY3QtPntUaW1lfTsKICAgIG15ICVQYWdlOwoKICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQogICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgIH0KCiAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gID0gNDA7CiAgICAkUGFnZXtNYXJnaW5Cb3R0b219ID0gNDA7CiAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gID0gJEhlYWRlclJpZ2h0OwogICAgJFBhZ2V7Rm9vdGVyTGVmdH0gICA9ICcnOwogICAgJFBhZ2V7UGFnZVRleHR9ICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgJFBhZ2V7UGFnZUNvdW50fSAgICA9IDE7CgogICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICk7CgogICAgIyBjcmVhdGUgZmlyc3QgUERGIHBhZ2UKICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgJVBhZ2UsCiAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICk7CiAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgdGl0bGUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckxhc3RuYW1lfSAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJFbWFpbH0gLiAnKScKICAgICAgICAgICAgLiAnLCAnIC4gJFRpbWUsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTQsCiAgICApOwoKICAgICMgb3V0cHV0IEZBUSBpbmZvcm1hdGlvbgogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMoCiAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICk7CgogICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICk7CgogICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB0aW1lIG9iamVjdAogICAgbXkgJFRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGltZScpOwoKICAgICMgcmV0dXJuIHRoZSBQREYgZG9jdW1lbnQKICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CiAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpLAogICAgKTsKICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cgp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjcmVhdGUgbGVmdCB0YWJsZQogICAgbXkgJFRhYmxlTGVmdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtTdGF0ZX0gKSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGxhbmd1YWdlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBhcHByb3ZhbCBzdGF0ZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICRGQVFEYXRhe0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0FwcHJvdmFsJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7QXBwcm92YWx9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgIG15ICRWb3RpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyB2b3Rpbmcgcm93cywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRUYWJsZVJpZ2h0ID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUmVzdWx0JykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSAuICIgJSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICAjIGxhc3QgdXBkYXRlIHJvdwogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBnZXQgUERGIG9iamVjdAogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dExpbmtlZE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIExpbmtEYXRhIExpbmtUeXBlTGlzdCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlICAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUeXBlTGlzdCA9ICV7ICRQYXJhbXtMaW5rVHlwZUxpc3R9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyAkUGFyYW17TGlua0RhdGF9IH0gKSB7CgogICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICBteSBATGlua0RhdGEgICAgID0gc3BsaXQgcXs6On0sICRMaW5rVHlwZUxpbmtEaXJlY3Rpb247CiAgICAgICAgbXkgJExpbmtUeXBlTmFtZSA9ICRUeXBlTGlzdHsgJExpbmtEYXRhWzBdIH0tPnsgJExpbmtEYXRhWzFdIC4gJ05hbWUnIH07CiAgICAgICAgJExpbmtUeXBlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGlua1R5cGVOYW1lKTsKCiAgICAgICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkTGlua1R5cGVOYW1lIC4gJzonOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAnJzsKCiAgICAgICAgIyBleHRyYWN0IG9iamVjdCBsaXN0CiAgICAgICAgbXkgJE9iamVjdExpc3QgPSAkUGFyYW17TGlua0RhdGF9LT57JExpbmtUeXBlTGlua0RpcmVjdGlvbn07CgogICAgICAgIGZvciBteSAkT2JqZWN0ICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJXskT2JqZWN0TGlzdH0gKSB7CgogICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkT2JqZWN0TGlzdC0+eyRPYmplY3R9IH0gKSB7CgogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9IHx8PSAnJzsKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRJdGVtLT57VGl0bGV9IHx8ICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlIHsKICAgICAgICAgICAgICAgICRSb3crKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGlua2VkIE9iamVjdHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0S2V5d29yZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRGQVFEYXRhe0tleXdvcmRzfSB8fCAnJzsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRGQVFEeW5hbWljRmllbGRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkT3V0cHV0ID0gMDsKICAgIG15ICVGQVEgICAgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVByaW50IiktPntEeW5hbWljRmllbGR9OwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgRkFRIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdlbmVyYXRlIHRhYmxlCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkRkFRe0ZBUUlEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJFZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRWYWx1ZSBlcSAiIjsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0KICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKQogICAgICAgICAgICAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgJFJvdysrOwogICAgICAgICRPdXRwdXQgPSAxOwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IFBERiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICBpZiAoJE91dHB1dCkgewoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgRHluYW1pYyBGaWVsZHMnKSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSAlVGFibGVQYXJhbTsKCiAgICAgICAgIyBjb252ZXJ0IEhUTUwgdG8gQVNDSUkKICAgICAgICBteSAkQXNjaWlGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WzBdWzBde0NvbnRlbnR9ID0gJEFzY2lpRmllbGQgfHwgJyc7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gNTExOwoKICAgICAgICAjIGdldCBQREYgb2JqZWN0CiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICAgICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFSaWNoVGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJEtleSAocXcoSXRlbUlEKSkgewogICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKICAgICAgICBpZiAoICEkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gJXMgaXMgZ2l2ZW4hJywgJEtleSApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IHRoZSByZXF1ZXN0ZWQgRkFRIGl0ZW0KICAgIG15ICVGQVFJdGVtID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykgfHwgJ290cnMvJzsKICAgIG15ICRVUkxSZWdleCAgICA9ICcvJyAuICRTY3JpcHRBbGlhcyAuICdpbmRleC5wbFw/QWN0aW9uPUFnZW50RkFRWm9vbTsnCiAgICAgICAgLiAnU3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JyAuICRHZXRQYXJhbXtJdGVtSUR9IC4gJztGaWxlSUQ9WzAtOV0rJzsKICAgIG15ICRFbGVtUmVnZXggPSAnc3JjPSIoJyAuICRVUkxSZWdleCAuICcpIic7CgogICAgbXkgQEZpZWxkczsKCiAgICBteSAkTG9hZGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICApOwoKICAgIGlmICggISRMb2FkZWQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFMYW5ndWFnZU9iamVjdCA9IEtlcm5lbDo6TGFuZ3VhZ2UtPm5ldygKICAgICAgICBVc2VyTGFuZ3VhZ2UgPT4gJEZBUUl0ZW17TGFuZ3VhZ2V9LAogICAgKTsKCiAgICAjIGdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFRpY2tldCBDb21wb3NlCiAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpUaWNrZXRDb21wb3NlJyk7CgogICAgIyBnZXQgdGhlIGludGVybmFsIHN0YXRlIHR5cGUKICAgIG15ICRJbnRlcm5hbFN0YXRlVHlwZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgaW50ZXJuYWwgc3RhdGUgdHlwZSBJRAogICAgbXkgJEludGVybmFsU3RhdGVJRCA9ICRJbnRlcm5hbFN0YXRlVHlwZS0+e1N0YXRlSUR9OwoKICAgICMgZ2V0IHVwbG9hZCBjYWNoZSBvYmplY3QKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgIyBnZXQgZm9ybSBpZAogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CgogICAgIyBjcmVhdGUgZm9ybSBpZAogICAgaWYgKCAhJEZvcm1JRCApIHsKICAgICAgICAkRm9ybUlEID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZG9uJ3Qgd2FzdGUgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZyBwb3dlciwgaWYgdGhlIGN1cnJlbnQgZmllbGQgZG9lc24ndCBoYXZlIGFueSBjb250ZW50CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUUl0ZW17ICdGaWVsZCcgLiAkRmllbGQgfTsKCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRGQVFJdGVteyAnRmllbGQnIC4gJEZpZWxkIH07CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBjdXJyZW50IEZBUSBmaWVsZCBmcm9tIFN5c0NvbmZpZwogICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJEZpZWxkICk7CgogICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZENvbmZpZzsKICAgICAgICBuZXh0IEZJRUxEIGlmIHJlZiAkRmllbGRDb25maWcgbmUgJ0hBU0gnOwogICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZENvbmZpZy0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgY3VycmVudCBmaWVsZCBpcyBpbnRlcm5hbAogICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZUlEICkgewogICAgICAgICAgICAkSXNJbnRlcm5hbCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgZmllbGQgc2hvdWxkIGJlIHZpc2libGUgdG8gdGhlIHB1YmxpYywgdGh1cyBiZSBpbnNlcnRlZCBpbnRvIGEKICAgICAgICAjIHJlc3BvbnNlIHRvIGEgY3VzdG9tZXIgb3Igbm90CiAgICAgICAgaWYgKCAhJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9ICYmICRJc0ludGVybmFsICkgewogICAgICAgICAgICBuZXh0IEZJRUxEOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGFsbCBVUkxzIHdoaWNoIHBvaW50IHRvIGFuIGVtYmVkZGVkIGltYWdlCiAgICAgICAgbXkgQE1hdGNoZWRVUkxzID0gKCAkRmllbGRDb250ZW50ID1+IG17JEVsZW1SZWdleH14Z21zICk7CiAgICAgICAgZm9yIG15ICRVUkwgKEBNYXRjaGVkVVJMcykgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBpZCBvZiB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAoJEZpbGVJRCkgPSAkVVJMID1+IG17IEZpbGVJRD0oWzAtOV0rKSB9bXN4OwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZpbGVJRDogJEZpbGVJRCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB0aGUgYXR0YWNobWVudCB0byB3aGljaCB0aGUgY3VycmVudCBVUkwgcG9pbnRzCiAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50TWV0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRmlsZW5hbWVUbXAgICAgPSAkQXR0YWNobWVudHtGaWxlbmFtZX07CiAgICAgICAgICAgIG15ICRTdWZmaXhUbXAgICAgICA9IDA7CiAgICAgICAgICAgIG15ICRVbmlxdWVGaWxlbmFtZSA9ICcnOwoKICAgICAgICAgICAgIyBjcmVhdGUgbm93IGFuIGFydGljbGUgYXR0YWNobWVudCAoaW5saW5lKSBiYXNlZCBvbiB0aGUgZGF0YSBvZiAlQXR0YWNobWVudCAoRkFRKQogICAgICAgICAgICBpZiAoJUF0dGFjaG1lbnQpIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG5hbWUgYWxyZWFkeSBleGlzdHMKICAgICAgICAgICAgICAgIHdoaWxlICggISRVbmlxdWVGaWxlbmFtZSApIHsKICAgICAgICAgICAgICAgICAgICAkVW5pcXVlRmlsZW5hbWUgPSAkRmlsZW5hbWVUbXA7CiAgICAgICAgICAgICAgICAgICAgTkVXTkFNRToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCByZXZlcnNlIEBBdHRhY2htZW50TWV0YSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBORVdOQU1FIGlmICRGaWxlbmFtZVRtcCBuZSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZSBleGlzdHMgLT4gY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICsrJFN1ZmZpeFRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudHtGaWxlbmFtZX0gPX4gbXtcQSAoLiopIFwuICguKz8pIFx6fW1zeCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWxlbmFtZVRtcCA9ICIkMS0kU3VmZml4VG1wLiQyIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWxlbmFtZVRtcCA9ICIkQXR0YWNobWVudHtGaWxlbmFtZX0tJFN1ZmZpeFRtcCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJFVuaXF1ZUZpbGVuYW1lID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTkVXTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7RmlsZW5hbWV9ID0gJEZpbGVuYW1lVG1wOwogICAgICAgICAgICAgICAgZGVsZXRlICRBdHRhY2htZW50e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZSBvZiB0aGUgY3VycmVudCB0aWNrZXQKICAgICAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgICAgICAuICIoSXRlbUlEOiAkR2V0UGFyYW17SXRlbUlEfSwgRmlsZUlEOiAkRmlsZUlEKSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBuZXcgY29udGVudCBpZAogICAgICAgICAgICBteSAkQ29udGVudElETmV3ID0gJyc7CiAgICAgICAgICAgIEBBdHRhY2htZW50TWV0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TWV0YSkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICRGaWxlbmFtZVRtcCBuZSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfTsKICAgICAgICAgICAgICAgICRDb250ZW50SUROZXcgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBsYXN0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbnRlbnRJRE5ldyBlcSAnJyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkbid0IGRldGVybWluZSBhIG5ldyBDb250ZW50SUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBhY3R1YWwgTUlNRSB0eXBlIGZyb20gdGhlIGNvbnRlbnQgdHlwZSwgd2hpY2ggYWxzbyBjb250YWlucyB0aGUgZmlsZW5hbWUKICAgICAgICAgICAgbXkgKCRNaW1lVHlwZSkgPSAkQXR0YWNobWVudHtDb250ZW50VHlwZX0gPX4gbXteKC4rLy4rKTsgWyBdIG5hbWU9LiskfXhtczsKCiAgICAgICAgICAgIG15ICRTZXNzaW9uID0gJyc7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntTZXNzaW9uSUR9ICYmICEkU2VsZi0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgICAgICAgICAkU2Vzc2lvbiA9ICcmJyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgbmV3IGlubGluZSBpbWFnZSBVUkwKICAgICAgICAgICAgbXkgJElubGluZUltYWdlID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPSRGb3JtSUQ7Q29udGVudElEPSRDb250ZW50SUROZXckU2Vzc2lvbiI7CgogICAgICAgICAgICAjIHJlcGxhY2UgdGhlIGltYWdlIFVSTCB3aXRoIHRoZSBpbmxpbmUgaW1hZ2UKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9fiBze1xRJFVSTFxFfXskSW5saW5lSW1hZ2V9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFzIGhlYWRlcgogICAgICAgIGlmICggJEZpZWxkQ29uZmlnLT57Q2FwdGlvbn0gJiYgJFRpY2tldENvbXBvc2VDb25maWctPntTaG93RmllbGROYW1lc30gKSB7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY2FwdGlvbiB0byB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIEZBUSBpdGVtCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkQ2FwdGlvbiA9ICRGQVFMYW5ndWFnZU9iamVjdC0+R2V0KCAkRmllbGRDb25maWctPntDYXB0aW9ufSApOwoKICAgICAgICAgICAgaWYgKCRUcmFuc2xhdGVkQ2FwdGlvbikgewogICAgICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICc8aDI+JyAuICRUcmFuc2xhdGVkQ2FwdGlvbiAuICc6PC9oMj4nIC4gJEZpZWxkQ29udGVudDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwdXNoIEBGaWVsZHMsICRGaWVsZENvbnRlbnQ7CiAgICB9CgogICAgbXkgJEZBUUhUTUwgPSBqb2luKCAnPGJyIC8+JywgQEZpZWxkcyApOwoKICAgICMgZ2V0IGFsbCBub24taW5saW5lIGF0dGFjaG1lbnRzIG9mIHRoZSBGQVEgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBnZXQgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAlQXR0YWNobWVudCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVBdHRhY2htZW50KSB7CgogICAgICAgICAgICAjIGFkZCB0aGUgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlIG9mIHRoZSBjdXJyZW50IHRpY2tldAogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkblwndCBnZXQgRkFRIGF0dGFjaG1lbnQgJwogICAgICAgICAgICAgICAgICAgIC4gIihJdGVtSUQ6ICRHZXRQYXJhbXtJdGVtSUR9LCBGaWxlSUQ6ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVJRH0pISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNlbmQgYSBsaXN0IG9mIGF0dGFjaG1lbnRzIGluIHRoZSB1cGxvYWQgY2FjaGUgYmFjayB0byB0aGUgY2xpZW50IHNpZGUgSmF2YVNjcmlwdCB3aGljaAogICAgIyByZW5kZXJzIHRoZW4gdGhlIGxpc3Qgb2YgY3VycmVudGx5IHVwbG9hZGVkIGF0dGFjaG1lbnRzCiAgICBteSBAVGlja2V0QXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICk7CgogICAgbXkgQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHM7CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewoKICAgICAgICAjIHJlbW92ZSB0aGUgaW5saW5lLWF0dGFjaG1lbnRzIHdoaWNoIHNob3VsZG4ndCBiZSBzaG93biBpbiB0aGUgcmVndWxhciBhdHRhY2htZW50IGxpc3QKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQFRpY2tldEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ID1+IG17XEEgaW5saW5lfW1zeCApIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBGaWx0ZXJlZFRpY2tldEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBpZiByaWNoLXRleHQgaXMgbm90IGFjdGl2ZSB0aGVuIHNldCBhbHNvIGlubGluZSBhdHRhY2htZW50cyBhcyByZWd1bGFyIGF0dGFjaG1lbnRzCiAgICAgICAgQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMgPSBAVGlja2V0QXR0YWNobWVudHM7CiAgICB9CgogICAgIyBjcmVhdGUgYSBKU09OIHN0cmluZwogICAgbXkgJEpTT04gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEZBUVRpdGxlICAgICAgICAgID0+ICRGQVFJdGVte1RpdGxlfSwKICAgICAgICAgICAgRkFRQ29udGVudCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUUhUTUwgKSB8fCAnJywKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgICAgPT4gJEZBUUhUTUwsCiAgICAgICAgICAgIFRpY2tldEF0dGFjaG1lbnRzID0+IFxARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgTG9jYWxpemF0aW9uICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVsZXRlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3RvcgogICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnfTsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgbXkgJFN0YXJ0SGl0ICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ID0gJENvbmZpZy0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICBteSAkU29ydEJ5ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwogICAgbXkgJFByb2ZpbGUgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgbXkgJFNhdmVQcm9maWxlICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgbXkgJFRha2VMYXN0U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgbXkgJEVyYXNlVGVtcGxhdGUgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbC10ZXh0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dC54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hUZW1wbGF0ZScgKSAmJiAkUHJvZmlsZSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFByb2ZpbGUiLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IHNlYXJjaCBwcm9maWxlIG9iamVjdAogICAgbXkgJFNlYXJjaFByb2ZpbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFByb2ZpbGUgKSB8fCAkVGFrZUxhc3RTZWFyY2ggKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IHNjYWxhciBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaAogICAgICAgICAgICBSYXRlU2VhcmNoVHlwZSBBcHByb3ZlZFNlYXJjaAogICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSBDaGFuZ2VUaW1lU2VhcmNoVHlwZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wIEl0ZW1DcmVhdGVUaW1lU3RvcERheSBJdGVtQ3JlYXRlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQgSXRlbUNoYW5nZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydCBJdGVtQ2hhbmdlVGltZVN0YXJ0RGF5IEl0ZW1DaGFuZ2VUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3AgSXRlbUNoYW5nZVRpbWVTdG9wRGF5IEl0ZW1DaGFuZ2VUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZXNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgc2VhcmNoIHBhcmFtcwogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKAogICAgICAgICAgICBxdyhDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyBWYWxpZElEcyBTdGF0ZUlEcyBDcmVhdGVkVXNlcklEcyBMYXN0Q2hhbmdlZFVzZXJJRHMpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15IEBBcnJheSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwogICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9IFxAQXJyYXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IER5bmFtaWMgZmllbGRzIGZyb20gcGFyYW0gb2JqZWN0CiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaCBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFwcHJvdmVkIG9wdGlvbgogICAgaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ1llcycgKSB7CiAgICAgICAgJEdldFBhcmFte0FwcHJvdmVkfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gJiYgJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSBlcSAnTm8nICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgfQoKICAgICMgZ2V0IGNyZWF0ZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgZ2V0IGNoYW5nZSB0aW1lIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgc2V0IHJlc3VsdCBmb3JtIEVOVgogICAgaWYgKCAhJEdldFBhcmFte1Jlc3VsdEZvcm19ICkgewogICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBzaG93IHJlc3VsdCBzaXRlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJEVyYXNlVGVtcGxhdGUgKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkUHJvZmlsZSB8fCAhJFNhdmVQcm9maWxlICkgewogICAgICAgICAgICAkUHJvZmlsZSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoIgogICAgICAgICAgICAuICI7UHJvZmlsZT0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkKICAgICAgICAgICAgLiAiO1NvcnRCeT0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KQogICAgICAgICAgICAuICI7T3JkZXJCeT0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkKICAgICAgICAgICAgLiAiO1Rha2VMYXN0U2VhcmNoPTEiCiAgICAgICAgICAgIC4gIjtTdGFydEhpdD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU3RhcnRIaXQpOwoKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSBzZWFyY2ggcHJvZmlsZSAodW5kZXIgbGFzdC1zZWFyY2ggb3IgcmVhbCBwcm9maWxlIG5hbWUpCiAgICAgICAgJFNhdmVQcm9maWxlID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTYXZlUHJvZmlsZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICAgICAgSXRlbUNoYW5nZSA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUaW1lVHlwZSAoIHNvcnQga2V5cyAlVGltZU1hcCApIHsKCiAgICAgICAgICAgICMgZ2V0IGNyZWF0ZSB0aW1lIHNldHRpbmdzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9ICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZyB3aXRoIHRpbWUgc3R1ZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAuLi4gYWdvCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZHluYW1pYyBmaWVsZHMgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIEZBUSBzZWFyY2gKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyB2YWx1ZSB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlYXJjaFBhcmFtZXRlciApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgIG15IEBBbGxWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoIHN0YXRlcwogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtWb3RlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgVXNlckNhdGVnb3J5R3JvdXAgSGFzaAogICAgICAgICMgVGhpcyByZXR1cm5zIGEgSGFzaCBvZiB0aGUgZm9sbG93aW5nIHNhbXBsZSBkYXRhIHN0cnVjdHVyZToKICAgICAgICAjCiAgICAgICAgIyAkVXNlckNhdEdyb3VwID0gewogICAgICAgICMgICAnMScgPT4gewogICAgICAgICMgICAgICAgICAgJzMnID0+ICdNaXNjU3ViJwogICAgICAgICMgICAgICAgIH0sCiAgICAgICAgIyAgICczJyA9PiB7fSwKICAgICAgICAjICAgJzAnID0+IHsKICAgICAgICAjICAgICAgICAgICAgJzEnID0+ICdNaXNjJywKICAgICAgICAjICAgICAgICAgICAgJzInID0+ICdzZWNyZXQnCiAgICAgICAgIyAgICAgICAgICB9LAogICAgICAgICMgICAnMicgPT4ge30KICAgICAgICAjIH07CiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgb3V0ZXIgaGFzaCBpbmZvcm0gYWJvdXQgc3ViY2F0ZWdvcmllcwogICAgICAgICMgMCBTaG93cyB0b3AgbGV2ZWwgQ2F0ZWdvcnlJRHMuCiAgICAgICAgIyAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJvIGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkVXNlckNhdEdyb3VwID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldwogICAgICAgIG15ICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwICYmIHJlZiAkVXNlckNhdEdyb3VwIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICMgU28gbm93IHdlIGhhdmUgdG8gZXh0cmFjdCBhbGwgQ2F0ZWdvcnkgSUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIuCiAgICAgICAgICAgICMgLT4gTG9vcCB0aHJvdWdoIHRoZSBvdXRlciBjYXRlZ29yeSBJRCdzCiAgICAgICAgICAgIGZvciBteSAkTGV2ZWwgKCBzb3J0IGtleXMgJXskVXNlckNhdEdyb3VwfSApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBWYWx1ZSBvZiB0aGUgY3VycmVudCBoYXNoIGtleSBpcyBhIGhhc2ggcmVmCiAgICAgICAgICAgICAgICBpZiAoICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkVXNlckNhdEdyb3VwLT57JExldmVsfSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgTWFwIHRoZSBrZXlzIG9mIHRoZSBpbm5lciBoYXNoIHRvIGEgVGVtcElEcyBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyBPcmlnaW5hbCBEYXRhIHN0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAjIHsKICAgICAgICAgICAgICAgICAgICAjICAnMScgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgICAgICMgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICAgICAgICAgICAgICMgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIG1hcHBpbmc6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgewogICAgICAgICAgICAgICAgICAgICMgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICcyJyA9PiAxJwogICAgICAgICAgICAgICAgICAgICMgfQoKICAgICAgICAgICAgICAgICAgICBteSAlVGVtcElEcyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9IH07CgogICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSBUZW1wSURzIG92ZXIgdGhlIGZvcm1hbGx5IGZvdW5kIEFsbG93ZWRDYXRlZ29yeXMKICAgICAgICAgICAgICAgICAgICAjIHRvIHByb2R1Y2UgYSBoYXNoIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cwogICAgICAgICAgICAgICAgICAgICMgYW5kIHRoZSBudW1iZXIgMSBhcyB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICAgICAgICAgJVRlbXBJRHMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZvciB0aGUgZGF0YWJhc2UgcXVlcnkgaXQncyBuZWNlc3NhcnkgdG8gaGF2ZSBhbiBhcnJheQogICAgICAgICMgb2YgQ2F0ZWdvcnlJRHMKICAgICAgICBteSBAQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCVBbGxvd2VkQ2F0ZWdvcnlJRHMpIHsKICAgICAgICAgICAgQENhdGVnb3J5SURzID0gc29ydCBrZXlzICVBbGxvd2VkQ2F0ZWdvcnlJRHM7CiAgICAgICAgfQoKICAgICAgICAjIENhdGVnb3JpZXMgZ290IGZyb20gdGhlIHdlYiByZXF1ZXN0IGNvdWxkIGluY2x1ZGUgYSBub3QgYWxsb3dlZCBjYXRlZ29yeSBpZiB0aGUgdXNlcgogICAgICAgICMgICAgdGVtcGVyIHdpdGggdGhlIGNhdGVnb3JpZXMgZHJvcC1ib3gsIGEgY2hlY2sgaXMgbmVlZGVkLgogICAgICAgICMKICAgICAgICAjICJNYXAiIGNvcHkgZnJvbSBvbmUgYXJyYXkgdG8gYW5vdGhlciwgd2hpbGUgImdyZXAiIHdpbGwgb25seSBsZXQgcGFzcyB0aGUgY2F0ZWdvcmllcwogICAgICAgICMgICAgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgJUFsbG93ZWRDYXRlZ29yeUlEcyBoYXNoCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyB3b3VsZCByZXN1bHQgaW4gZmluZGluZyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBJdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIEZBUSdzIHdpdGhvdXQgY2F0ZWdvcmllcwogICAgICAgICMgc28gYXQgbGVhc3Qgb25lIGNhdGVnb3J5IGhhcyB0byBiZSBwcmVzZW50CgogICAgICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgICAgICAjIGRlZmF1bHQgc2VhcmNoIG9uIGFsbCB2YWxpZCBpZHMsIHRoaXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ICVHZXRQYXJhbQogICAgICAgICAgICBAVmlld2FibGVGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyRPcmRlckJ5XSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWFyY2hTdGF0ZXMsCiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAgICAgVmFsaWRJRHMgICAgICAgICAgICA9PiBcQEFsbFZhbGlkSURzLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICAgICA9PiBcQENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aW1lIG9iamVjdAogICAgICAgIG15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAgICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICAgICAjIENTViBhbmQgRXhjZWwgb3V0cHV0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicKICAgICAgICAgICAgfHwgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdFeGNlbCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQFRtcENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBGQVEgZHluYW1pYyBmaWVsZHMgZm9yIENTViBkaXNwbGF5CiAgICAgICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57U2VhcmNoQ1NWRHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZ2V0IGluZm8gZm9yIENTViBvdXRwdXQKICAgICAgICAgICAgICAgIG15ICVDU1ZJbmZvID0gKCVGQVFEYXRhKTsKCiAgICAgICAgICAgICAgICAkQ1NWSW5mb3tDaGFuZ2VkfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXQnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIENTViBxdW90ZQogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCAgICA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsIHF3KFN0YXRlIENoYW5nZWQpOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIG9uIENWUyByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGRhdGEKICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENTVkluZm97JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gRkFRIGl0ZW0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBTZXBhcmF0b3IgZnJvbSBsYW5ndWFnZSBmaWxlCiAgICAgICAgICAgIG15ICRVc2VyQ1NWU2VwYXJhdG9yID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+e1NlcGFyYXRvcn07CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKS0+e0NTVlNlcGFyYXRvcn0tPntBY3RpdmV9ICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNTVlNlcGFyYXRvciA9ICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnRkFRTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIENTViB0byBkb3dubG9hZAogICAgICAgICAgICBteSAkRmlsZU5hbWUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CgogICAgICAgICAgICBteSAkQ1NWT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBDU1Ygb3V0cHV0CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewoKICAgICAgICAgICAgICAgIG15ICRDU1YgPSAkQ1NWT2JqZWN0LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkVXNlckNTVlNlcGFyYXRvciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gY3N2IHRvIGRvd25sb2FkCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZU5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdlbmVyYXRlIEV4Y2VsIG91dHB1dAogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewogICAgICAgICAgICAgICAgbXkgJEV4Y2VsID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJ0V4Y2VsJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gRXhjZWwgdG8gZG93bmxvYWQKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lID0+ICRGaWxlTmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ueGxzeCIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4KICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IiwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeGNlbCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgICMgZ2V0IFBERiBvYmplY3QKICAgICAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgICAgIG15IEBQREZEYXRhOwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNoYW5nZSBkYXRlIHRvIGxvbmcgZm9ybWF0CiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGIFJvd3MKICAgICAgICAgICAgICAgIG15IEBQREZSb3c7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBsYW5ndWFnZSByb3cKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRGQVFEYXRhe1N0YXRlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRDaGFuZ2VkOwogICAgICAgICAgICAgICAgcHVzaCBAUERGRGF0YSwgXEBQREZSb3c7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgbXkgJENlbGxEYXRhOwoKICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1RpdGxlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgY29ycmVjdCBoZWFkZXIgaW5kZXgKICAgICAgICAgICAgICAgIG15ICROZXh0SGVhZGVySW5kZXggPSAzOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYW5ndWFnZScpOwogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICAgICAkTmV4dEhlYWRlckluZGV4ICAgICAgICAgICAgICAgPSA0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bJE5leHRIZWFkZXJJbmRleF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU3RhdGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bJE5leHRIZWFkZXJJbmRleF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Q29udGVudH0KICAgICAgICAgICAgICAgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2hhbmdlZCcpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsgJE5leHRIZWFkZXJJbmRleCArIDEgXS0+e0ZvbnR9ID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBjb250ZW50IGFycmF5CiAgICAgICAgICAgICAgICBteSAkQ291bnRlclJvdyA9IDE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQFBERkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRlckNvbHVtbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb250ZW50ICggQHskUm93fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bJENvdW50ZXJSb3ddLT5bJENvdW50ZXJDb2x1bW5dLT57Q29udGVudH0gPSAkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJSb3crKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gUmVzdWx0IScpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkbGluZUxlZnR9ICAgID0gJFRpdGxlOwoKICAgICAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVRhYmxlUGFyYW07CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfSAgICAgICAgICAgID0gJENlbGxEYXRhOwogICAgICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICA9IDY7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgICAgICAgICAjIGNyZWF0ZSBuZXcgUERGIGRvY3VtZW50CiAgICAgICAgICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdGFydCB0YWJsZSBvdXRwdXQKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgMScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRpdGxlCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiAxMywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ID0+ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckxhc3RuYW1lfSAuICcgKCcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpJwogICAgICAgICAgICAgICAgICAgIC4gJywgJyAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBhbm90aGVyIHBhZ2UKICAgICAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAnIC4gJF8sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZXR1cm4gdGhlIFBERiBkb2N1bWVudAogICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc3RhcnQgSFRNTCBwYWdlCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPlByaW50KAogICAgICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICAgICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICAgICAjIHNob3cgRkFRJ3MKICAgICAgICAgICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRWaWV3KQogICAgICAgICAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KQogICAgICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkRmlsdGVyKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICAgICBteSAkRmlsdGVyTGluayA9ICdTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkgLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJzsnOwoKICAgICAgICAgICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJENvbmZpZy0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAgICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBlbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rCiAgICAgICAgICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAnTnVtYmVyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICAgICAgICAgIEZBUUlEcyA9PiBcQFZpZXdhYmxlRkFRSURzLAogICAgICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVGQVFJRHMsCgogICAgICAgICAgICAgICAgVmlldyA9PiAkVmlldywKCiAgICAgICAgICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgICAgIExpbmtGaWx0ZXIgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW5rQmFjayAgID0+ICRMaW5rQmFjaywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFByb2ZpbGUsCgogICAgICAgICAgICAgICAgVGl0bGVOYW1lID0+IFRyYW5zbGF0YWJsZSgnU2VhcmNoIFJlc3VsdCcpLAogICAgICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWFyY2hMaW1pdCwKCiAgICAgICAgICAgICAgICBGaWx0ZXIgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgICAgICAgICBGaWx0ZXJMaW5rID0+ICRGaWx0ZXJMaW5rLAoKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCgogICAgICAgICAgICAgICAgU2hvd0NvbHVtbnMgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgICAgICBGQVFUaXRsZVNpemUgPT4gJENvbmZpZy0+e1RpdGxlU2l6ZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhQcm9maWxlRGVsZXRlJyApIHsKICAgICAgICBteSAkUHJvZmlsZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApOwoKICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVgnICkgewoKICAgICAgICAjIGNyZWF0ZSBvdXRwdXQKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPl9NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ2hhcnNldCAgICAgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZGVmYXVsdCBzZWFyY2ggc2NyZWVuCiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKCn0KCnN1YiBfTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkUHJvZmlsZSAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSB8fCAnJzsKICAgIG15ICRFbXB0eVNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgIGlmICggISRQcm9maWxlICkgewogICAgICAgICRFbXB0eVNlYXJjaCA9IDE7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHByb2ZpbGUgb2JqZWN0CiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgbXkgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3RvcgogICAgbXkgJENvbmZpZyA9ICRTZWxmLT57Q29uZmlnfTsKCiAgICAjIGlmIG5vIHByb2ZpbGUgaXMgdXNlZCwgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgaWYgKCAhJFByb2ZpbGUgKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRDb25maWctPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkQ29uZmlnLT57RGVmYXVsdHN9LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdEeW5hbWljRmllbGQnOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRBdHRyaWJ1dGV9ID0gJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGF0dHJpYnV0ZXMgc3RyaW5nCiAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBOdW1iZXInKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGdWxsdGV4dCcpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1RpdGxlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdLZXl3b3JkJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IExhbmd1YWdlcyBhdHRyaWJ1dGUKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTGFuZ3VhZ2UnKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQ2F0ZWdvcnknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1ZhbGlkSURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdWYWxpZGl0eScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnU3RhdGVJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1N0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnVm90ZXMnKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdSYXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdBcHByb3ZlZFNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQXBwcm92ZWQnKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIGJ5JyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0xhc3QgQ2hhbmdlZCBieScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU2xvdCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50JywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNoYW5nZVRpbWVTbG90JywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknKSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBkeW5hbWljIGZpZWxkcyBzZWFyY2ggb3B0aW9ucyBmb3IgYXR0cmlidXRlIHNlbGVjdAogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAjIGNyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcwogICAgICAgIGlmICgkRHluYW1pY0ZpZWxkU2VwYXJhdG9yKSB7CiAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMDsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZHluYW1pYyBmaWVsZCBsYWJlbAogICAgICAgIG15ICRUcmFuc2xhdGVkRHluYW1pY0ZpZWxkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0sCiAgICAgICAgKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBzdWZmaXgKICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRTdWZmaXggPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUHJlZmVyZW5jZS0+e0xhYmVsU3VmZml4fSwKICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZFN1ZmZpeCkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRTdWZmaXggPSAnICgnIC4gJFRyYW5zbGF0ZWRTdWZmaXggLiAnKSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYSBzZXBhcmF0b3IgaWYgYSBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZSB3YXMgcHVzaGVkCiAgICBpZiAoICEkRHluYW1pY0ZpZWxkU2VwYXJhdG9yICkgewogICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMKICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c30tPntEeW5hbWljRmllbGR9CiAgICAgICAgICAgICAgICAgICAgLT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZHJvcC1kb3duIG1lbnUgZm9yICdhdHRyaWJ1dGVzJwogICAgJFBhcmFte0F0dHJpYnV0ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgID0+IFxAQXR0cmlidXRlcywKICAgICAgICBOYW1lICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICBNdWx0aXBsZSA9PiAwLAogICAgICAgIENsYXNzICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgIE5hbWUgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICBNdWx0aXBsZSA9PiAwLAogICAgICAgIENsYXNzICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IGxhbmd1YWdlcyBsaXN0CiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZHJvcC1kb3duIG1lbnUgZm9yICdsYW5ndWFnZXMnCiAgICAkUGFyYW17TGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0xhbmd1YWdlSURzfSB8fCBbXSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzICh3aXRoIGNhdGVnb3J5IGxvbmcgbmFtZXMpIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCB0aGUgY2F0ZWdvcnkgc2VsZWN0aW9uCiAgICAkUGFyYW17Q2F0ZWdvcmllc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmVlVmlldyAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgIyBidWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uCiAgICAkUGFyYW17VmFsaWRTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgID0+ICdWYWxpZElEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17VmFsaWRJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBjcmVhdGUgYSBtaXggb2Ygc3RhdGUgYW5kIHN0YXRlIHR5cGVzIGhhc2ggaW4gb3JkZXIgdG8gaGF2ZSB0aGUgc3RhdGUgdHlwZSBJRHMgd2l0aCBzdGF0ZQogICAgIyBuYW1lcwogICAgbXkgJVN0YXRlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlU3RhdGVzOwogICAgZm9yIG15ICRTdGF0ZUlEICggc29ydCBrZXlzICVTdGF0ZUxpc3QgKSB7CiAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRTdGF0ZXN7ICRTdGF0ZURhdGF7VHlwZUlEfSB9ID0gJFN0YXRlRGF0YXtOYW1lfTsKICAgIH0KCiAgICAkUGFyYW17U3RhdGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17U3RhdGVJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJVZvdGluZ09wZXJhdG9ycyA9ICgKICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VxdWFscycpLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuJyksCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4gZXF1YWxzJyksCiAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4nKSwKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbiBlcXVhbHMnKSwKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0FwcHJvdmVkU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm8gID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgWWVzID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJ1llcycsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkKICAgIG15ICVTaG93blVzZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHRoZSBVc2VySURzIGZyb20gRkFRIGFuZCBmYXFfYWRtaW4gbWVtYmVycwogICAgbXkgJUdyb3VwVXNlcnM7CiAgICBmb3IgbXkgJEdyb3VwIChxdyhmYXEgZmFxX2FkbWluKSkgewoKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICBteSAlVXNlcnMgICA9ICRHcm91cE9iamVjdC0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0hBU0gnLAogICAgICAgICk7CiAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgIH0KCiAgICAjIHJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3VwcwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkU2hvd25Vc2Vyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CiAgICAkUGFyYW17Q3JlYXRlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ3dpdGhpbiB0aGUgbGFzdCAuLi4nKSwKICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ3dpdGhpbiB0aGUgbGFzdCAuLi4nKSwKICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ2hhbmdlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdG9wU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJUdldFBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNoYW5nZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgIG15ICVQcm9maWxlcyA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICk7CiAgICBkZWxldGUgJFByb2ZpbGVzeycnfTsKICAgIGRlbGV0ZSAkUHJvZmlsZXN7J2xhc3Qtc2VhcmNoJ307CiAgICBpZiAoJEVtcHR5U2VhcmNoKSB7CiAgICAgICAgJFByb2ZpbGVzeycnfSA9ICctJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRQcm9maWxlc3snbGFzdC1zZWFyY2gnfSA9ICctJzsKICAgIH0KICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgIElEICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFByb2ZpbGUsCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOb3JtYWwgPT4gVHJhbnNsYXRhYmxlKCdOb3JtYWwnKSwKICAgICAgICAgICAgUHJpbnQgID0+IFRyYW5zbGF0YWJsZSgnUHJpbnQnKSwKICAgICAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICAgICAgICAgIEV4Y2VsICA9PiBUcmFuc2xhdGFibGUoJ0V4Y2VsJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEVtcHR5U2VhcmNoID0+ICRFbXB0eVNlYXJjaCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBhdHRyaWJ1dGVzCiAgICBteSAlQWxyZWFkeVNob3duOwogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoQEF0dHJpYnV0ZXMpIHsKICAgICAgICBteSAkS2V5ID0gJEl0ZW0tPntLZXl9OwogICAgICAgIG5leHQgSVRFTSBpZiAhJEtleTsKICAgICAgICBuZXh0IElURU0gaWYgIWRlZmluZWQgJEdldFBhcmFteyRLZXl9OwogICAgICAgIG5leHQgSVRFTSBpZiAkR2V0UGFyYW17JEtleX0gZXEgJyc7CgogICAgICAgIG5leHQgSVRFTSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYU2hvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICRLZXksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsLXRleHQgc2VhcmNoCiAgICBpZiAoICEkUHJvZmlsZSApIHsKCiAgICAgICAgIyBNZXJnZSByZWd1bGFyIHNob3cvaGlkZSBzZXR0aW5ncyBhbmQgdGhlIHNldHRpbmdzIGZvciB0aGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRGVmYXVsdHMgPSAleyAkQ29uZmlnLT57RGVmYXVsdHN9IHx8IHt9IH07CgogICAgICAgIGRlbGV0ZSAkRGVmYXVsdHN7RHluYW1pY0ZpZWxkfTsKCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRJdGVtICggc29ydCBrZXlzICV7ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9IH0gKSB7CiAgICAgICAgICAgIGlmICggJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0tPnskRHluYW1pY0ZpZWxkSXRlbX0gPT0gMiApIHsKICAgICAgICAgICAgICAgICREZWZhdWx0c3siU2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkSXRlbSJ9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCVEZWZhdWx0cykgewogICAgICAgICAgICBERUZBVUxUOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlRGVmYXVsdHMgKSB7CiAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFQgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsgICAgIyBJZ25vcmUgZW50cnkgZm9yIERGIGNvbmZpZwogICAgICAgICAgICAgICAgbmV4dCBERUZBVUxUIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hBSkFYU2hvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVhTaG93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29uZmlnIGZvciBmcm9udGVuZAogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCIpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgRkFRIG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgY29uZmlnIGZyb20gdGhlIGNvbnN0cnVjdG9yCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICBteSAkU2VhcmNoTGltaXQgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDUwMDsKICAgIG15ICRTb3J0QnkgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CiAgICBteSAkUHJvZmlsZSAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICBteSAkU2F2ZVByb2ZpbGUgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICBteSAkVGFrZUxhc3RTZWFyY2ggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFrZUxhc3RTZWFyY2gnICkgfHwgJyc7CiAgICBteSAkRXJhc2VUZW1wbGF0ZSAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CiAgICBteSAkTmF2ICAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApICAgICAgICAgICAgfHwgJyc7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHNlYXJjaCB3aXRoIGEgc2F2ZWQgdGVtcGxhdGUKICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRQcm9maWxlICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249QWdlbnRGQVFTZWFyY2hTbWFsbDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRQcm9maWxlO05hdj0kTmF2IgogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IHNlYXJjaCBwcm9maWxlIG9iamVjdAogICAgbXkgJFNlYXJjaFByb2ZpbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpOwoKICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFByb2ZpbGUgKSB8fCAkVGFrZUxhc3RTZWFyY2ggKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IHNjYWxhciBzZWFyY2ggcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUgVm90ZVNlYXJjaE9wdGlvbgogICAgICAgICAgICBSYXRlU2VhcmNoIFJhdGVTZWFyY2hUeXBlIFJhdGVTZWFyY2hPcHRpb24gQXBwcm92ZWRTZWFyY2gKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgQ2hhbmdlVGltZVNlYXJjaFR5cGUKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0IEl0ZW1DcmVhdGVUaW1lU3RhcnREYXkgSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkgSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcgogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0IEl0ZW1DaGFuZ2VUaW1lUG9pbnQKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0CiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RhcnQgSXRlbUNoYW5nZVRpbWVTdGFydERheSBJdGVtQ2hhbmdlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdGFydFllYXIKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdG9wIEl0ZW1DaGFuZ2VUaW1lU3RvcERheSBJdGVtQ2hhbmdlVGltZVN0b3BNb250aAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0b3BZZWFyCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwoKICAgICAgICAgICAgIyByZW1vdmUgd2hpdGVzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBcQSBccysgfXt9eG1zOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGFycmF5IHNlYXJjaCBwYXJhbXMKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICgKICAgICAgICAgICAgcXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgVmFsaWRJRHMgU3RhdGVJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdAogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2ggcHJvZmlsZQogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpICkgewogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSA9ICggJUdldFBhcmFtLCAleyREeW5hbWljRmllbGRWYWx1ZX0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhcHByb3ZlZCBvcHRpb24KICAgIGlmICggJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSAmJiAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9IGVxICdZZXMnICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ05vJyApIHsKICAgICAgICAkR2V0UGFyYW17QXBwcm92ZWR9ID0gMDsKICAgIH0KCiAgICAjIGdldCB2b3RlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259IGVxICdWb3RlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHJhdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gZXEgJ1JhdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgY3JlYXRlIHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgY2hhbmdlIHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtDaGFuZ2VUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gRU5WCiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBzaXRlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJEVyYXNlVGVtcGxhdGUgKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkUHJvZmlsZSB8fCAhJFNhdmVQcm9maWxlICkgewogICAgICAgICAgICAkUHJvZmlsZSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUVNlYXJjaFNtYWxsO1N1YmFjdGlvbj1TZWFyY2giCiAgICAgICAgICAgIC4gIjtQcm9maWxlPSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAuICI7U29ydEJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICI7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTdGFydEhpdCkKICAgICAgICAgICAgLiAiO05hdj0kTmF2IjsKCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTYXZlUHJvZmlsZSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgaWYgKCAkU2F2ZVByb2ZpbGUgJiYgJFByb2ZpbGUgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdm90ZXMgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSByYXRlIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICYmICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1JhdGV9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICAgICAgSXRlbUNoYW5nZSA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUaW1lVHlwZSAoIHNvcnQga2V5cyAlVGltZU1hcCApIHsKCiAgICAgICAgICAgICMgZ2V0IGNyZWF0ZSB0aW1lIHNldHRpbmdzCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9ICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZyB3aXRoIHRpbWUgc3R1ZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1vcmUgdGhhbiAuLi4gYWdvCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBmdWxsLXRleHQgc2VhcmNoCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgICAgICBteSBAQWxsVmFsaWRJRHMgPSBrZXlzICVWYWxpZExpc3Q7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoIHN0YXRlcwogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgRkFRIHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlYXJjaFBhcmFtZXRlciApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBHZXQgVXNlckNhdGVnb3J5R3JvdXAgSGFzaAogICAgICAgICMgVGhpcyByZXR1cm5zIGEgSGFzaCBvZiB0aGUgZm9sbG93aW5nIHNhbXBsZSBkYXRhIHN0cnVjdHVyZToKICAgICAgICAjCiAgICAgICAgIyAkVXNlckNhdEdyb3VwID0gewogICAgICAgICMgICAnMScgPT4gewogICAgICAgICMgICAgICAgICAgJzMnID0+ICdNaXNjU3ViJwogICAgICAgICMgICAgICAgIH0sCiAgICAgICAgIyAgICczJyA9PiB7fSwKICAgICAgICAjICAgJzAnID0+IHsKICAgICAgICAjICAgICAgICAgICAgJzEnID0+ICdNaXNjJywKICAgICAgICAjICAgICAgICAgICAgJzInID0+ICdzZWNyZXQnCiAgICAgICAgIyAgICAgICAgICB9LAogICAgICAgICMgICAnMicgPT4ge30KICAgICAgICAjIH07CiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgb3V0ZXIgaGFzaCBpbmZvcm0gYWJvdXQgc3ViY2F0ZWdvcmllcwogICAgICAgICMgMCBTaG93cyB0b3AgbGV2ZWwgQ2F0ZWdvcnlJRHMuCiAgICAgICAgIyAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJ3IGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkVXNlckNhdEdyb3VwID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldwogICAgICAgIG15ICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwICYmIHJlZiAkVXNlckNhdEdyb3VwIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICMgU28gbm93IHdlIGhhdmUgdG8gZXh0cmFjdCBhbGwgQ2F0ZWdvcnkgSUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIuCiAgICAgICAgICAgICMgLT4gTG9vcCB0aHJvdWdoIHRoZSBvdXRlciBjYXRlZ29yeSBJRCdzCiAgICAgICAgICAgIGZvciBteSAkTGV2ZWwgKCBzb3J0IGtleXMgJXskVXNlckNhdEdyb3VwfSApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBWYWx1ZSBvZiB0aGUgY3VycmVudCBoYXNoIGtleSBpcyBhIGhhc2ggcmVmCiAgICAgICAgICAgICAgICBpZiAoICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkVXNlckNhdEdyb3VwLT57JExldmVsfSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgTWFwIHRoZSBrZXlzIG9mIHRoZSBpbm5lciBoYXNoIHRvIGEgVGVtcElEcyBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyBPcmlnaW5hbCBEYXRhc3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICMgewogICAgICAgICAgICAgICAgICAgICMgICcxJyA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgIyAgJzInID0+ICdzZWNyZXQnCiAgICAgICAgICAgICAgICAgICAgIyB9CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgYWZ0ZXIgbWFwcGluZzoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB7CiAgICAgICAgICAgICAgICAgICAgIyAgJzEnID0+IDEsCiAgICAgICAgICAgICAgICAgICAgIyAgJzInID0+IDEnCiAgICAgICAgICAgICAgICAgICAgIyB9CgogICAgICAgICAgICAgICAgICAgIG15ICVUZW1wSURzID0gbWFwIHsgJF8gPT4gMSB9IGtleXMgJXsgJFVzZXJDYXRHcm91cC0+eyRMZXZlbH0gfTsKCiAgICAgICAgICAgICAgICAgICAgIyBQdXQgdGhlIFRlbXBJRHMgb3ZlciB0aGUgZm9ybWFsbHkgZm91bmQgQWxsb3dlZENhdGVnb3J5cwogICAgICAgICAgICAgICAgICAgICMgdG8gcHJvZHVjZSBhIGhhc2ggdGhhdCBob2xkcyBhbGwgQ2F0ZWdvcnlJRCBhcyBrZXlzCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5CiAgICAgICAgIyBvZiBDYXRlZ29yeUlEcwogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2gKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0NhdGVnb3J5SURzfSApICkgewogICAgICAgICAgICBAeyAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IH0gPSBtYXAgeyRffSBncmVwIHsgJEFsbG93ZWRDYXRlZ29yeUlEc3skX30gfSBAeyAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9IH07CiAgICAgICAgfQoKICAgICAgICAjIEp1c3Qgc2VhcmNoIGlmIHdlIGRvIGhhdmUgY2F0ZWdvcmllcywgd2UgaGF2ZSBhY2Nlc3MgdG8uCiAgICAgICAgIyBJZiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhbnkgY2F0ZWdvcnksIGEgc2VhcmNoIHdpdGggbm8gQ2F0ZWdvcnlJRHMKICAgICAgICAjIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyBzbyBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkgaGFzIHRvIGJlIHByZXNlbnQKCiAgICAgICAgbXkgQFZpZXdhYmxlRkFRSURzID0gKCk7CgogICAgICAgIGlmIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgICAgICMgcGVyZm9ybSBGQVEgc2VhcmNoCiAgICAgICAgICAgICMgZGVmYXVsdCBzZWFyY2ggb24gYWxsIHZhbGlkIGlkcywgdGhpcyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgJUdldFBhcmFtCiAgICAgICAgICAgIEBWaWV3YWJsZUZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlYXJjaFN0YXRlcywKICAgICAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBWYWxpZElEcyAgICAgICAgICAgID0+IFxAQWxsVmFsaWRJRHMsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgICAgICAgID0+IFxAQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgSFRNTCBwYWdlCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgPSAnJzsKCiAgICAgICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICAgICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICMgc2hvdyBGQVEncwogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0JhY2sgPSAnU3ViYWN0aW9uPUxvYWRQcm9maWxlO1Byb2ZpbGU9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRQcm9maWxlIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CgogICAgICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJENvbmZpZy0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2sKICAgICAgICAgICAgaWYgKCAhJFBvc3NpYmxlQ29sdW1ueydOdW1iZXInfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAnTnVtYmVyJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICAgICAgRkFRSURzID0+IFxAVmlld2FibGVGQVFJRHMsCiAgICAgICAgICAgIFRvdGFsICA9PiBzY2FsYXIgQFZpZXdhYmxlRkFRSURzLAoKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKCiAgICAgICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgTGlua0ZpbHRlciA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFByb2ZpbGUsCgogICAgICAgICAgICBUaXRsZU5hbWUgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggUmVzdWx0JyksCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCgogICAgICAgICAgICBGaWx0ZXIgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIEZpbHRlckxpbmsgPT4gJEZpbHRlckxpbmssCgogICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCgogICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza0Zvcm0oCiAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgX01hc2tGb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBnZXQgcHJvZmlsZXMgbGlzdAogICAgbXkgJVByb2ZpbGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUnKS0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCBwcm9maWxlcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQcm9maWxlc30sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIGdldCBsYW5ndWFnZXMgbGlzdAogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRyb3AtZG93biBtZW51IGZvciAnbGFuZ3VhZ2VzJwogICAgJFBhcmFte0xhbmd1YWdlc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30gfHwgW10sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBnZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9ICRGQVFPYmplY3QtPkdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIGNhdGVnb3J5IHNlbGVjdGlvbgogICAgJFBhcmFte0NhdGVnb3JpZXNTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0NhdGVnb3J5SURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwoKICAgICMgYnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbgogICAgJFBhcmFte1ZhbGlkU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAnVmFsaWRJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZhbGlkSURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgY3JlYXRlIGEgbWl4IG9mIHN0YXRlIGFuZCBzdGF0ZSB0eXBlcyBoYXNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIHN0YXRlIHR5cGUgSURzIHdpdGggc3RhdGUKICAgICMgbmFtZXMKICAgIG15ICVTdGF0ZUxpc3QgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgbXkgJVN0YXRlczsKICAgIGZvciBteSAkU3RhdGVJRCAoIHNvcnQga2V5cyAlU3RhdGVMaXN0ICkgewogICAgICAgIG15ICVTdGF0ZURhdGEgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkU3RhdGVzeyAkU3RhdGVEYXRhe1R5cGVJRH0gfSA9ICRTdGF0ZURhdGF7TmFtZX07CiAgICB9CgogICAgJFBhcmFte1N0YXRlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICA9PiAnU3RhdGVJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDMsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1N0YXRlSURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFcXVhbHMnKSwKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbicpLAogICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuIGVxdWFscycpLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuJyksCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4gZXF1YWxzJyksCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICAkUGFyYW17UmF0ZVNlYXJjaFNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtBcHByb3ZlZFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5vICA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgIFllcyA9PiBUcmFuc2xhdGFibGUoJ1llcycpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBcHByb3ZlZFNlYXJjaCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJycsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkKICAgIG15ICVTaG93blVzZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHRoZSBVc2VySURzIGZyb20gRkFRIGFuZCBmYXFfYWRtaW4gbWVtYmVycwogICAgbXkgJUdyb3VwVXNlcnM7CiAgICBmb3IgbXkgJEdyb3VwIChxdyhmYXEgZmFxX2FkbWluKSkgewoKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICBteSAlVXNlcnMgICA9ICRHcm91cE9iamVjdC0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0hBU0gnLAogICAgICAgICk7CiAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgIH0KCiAgICAjIHJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3VwcwogICAgZm9yIG15ICRVc2VySUQgKCBzb3J0IGtleXMgJVNob3duVXNlcnMgKSB7CiAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkU2hvd25Vc2Vyc3skVXNlcklEfTsKICAgICAgICB9CiAgICB9CiAgICAkUGFyYW17Q3JlYXRlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVTaG93blVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ3dpdGhpbiB0aGUgbGFzdCAuLi4nKSwKICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ3dpdGhpbiB0aGUgbGFzdCAuLi4nKSwKICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ2hhbmdlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdG9wU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNoYW5nZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICMgY3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaFNtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBteSAlVXNlclByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhZGVmaW5lZCAkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgaWYgKCAkVXNlclByZWZlcmVuY2Vze1VzZXJBZ2VudERvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gPSAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKICAgICRHZXRQYXJhbXtSYXRlfSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JhdGUnICk7CgogICAgIyBnZXQgbmF2aWdhdGlvbiBiYXIgb3B0aW9uCiAgICBteSAkTmF2ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSB8fCAnJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdybycsCiAgICApOwoKICAgICMgc2hvdyBlcnJvciBtZXNzYWdlCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEhUTUwgdXRpbHMgb2JqZWN0CiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkRmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkZWQgUGFyYW06ICROZWVkZWQhIiwKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CgogICAgICAgICMgYnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzCiAgICAgICAgbXkgJFNlc3Npb25JRCA9ICcnOwogICAgICAgIGlmICggJFNlbGYtPntTZXNzaW9uSUR9ICYmICEkU2VsZi0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9fiBzewogICAgICAgICAgICAgICAgKEFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9XGQrO0ZpbGVJRD1cZCspCiAgICAgICAgICAgIH17JDEkU2Vzc2lvbklEfWdtc3g7CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBIVE1MIGlmIG5lZWRlZAogICAgICAgIGlmICgKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKQogICAgICAgICAgICAmJiAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fQogICAgICAgICAgICAmJiAkRkFRRGF0YXtDb250ZW50VHlwZX0gbmUgJ3RleHQvaHRtbCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPlRvSFRNTCgKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBkZXRlY3QgYWxsIHBsYWluIHRleHQgbGlua3MgYW5kIHB1dCB0aGVtIGludG8gYW4gSFRNTCA8YT4gdGFnCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17RmlsZUlEfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoJUZpbGUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkR2V0UGFyYW17RmlsZUlEfSkhIE1heSBiZSBhbiBhdHRhY2shISEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIG90aGVyIHN1Yi1hY3Rpb25zIGNvbnRpbnVlcyBoZXJlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgbXkgJE91dHB1dDsKICAgIGlmICggJE5hdiBlcSAnTm9uZScgKSB7CgogICAgICAgICMgb3V0cHV0IGhlYWRlciBzbWFsbCBhbmQgbm8gTmF2YmFyCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyIGFuZCBuYXZpZ2F0aW9uIGJhcgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgfQoKICAgICMgZGVmaW5lIGRpZmZlcmVudCBub3RpZmljYXRpb25zCiAgICBteSAlTm90aWZpY2F0aW9ucyA9ICgKICAgICAgICBUaGFua3MgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnSW5mbycsCiAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyksCiAgICAgICAgfSwKICAgICAgICBBbHJlYWR5Vm90ZWQgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJyksCiAgICAgICAgfSwKICAgICAgICBOb1JhdGUgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ05vIHJhdGUgc2VsZWN0ZWQhJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBvdXRwdXQgbm90aWZpY2F0aW9ucyBpZiBhbnkKICAgIG15ICROb3RpZnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTm90aWZ5JyApIHx8ICcnOwogICAgaWYgKCAkTm90aWZ5ICYmIElzSGFzaFJlZldpdGhEYXRhKCAkTm90aWZpY2F0aW9uc3skTm90aWZ5fSApICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAleyAkTm90aWZpY2F0aW9uc3skTm90aWZ5fSB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBteSAkVm90aW5nICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBGQVEgdm90ZSBpbmZvcm1hdGlvbgogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkVm90ZURhdGEgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICBDcmVhdGVCeSAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICAjIGdldCB0aW1lIG9iamVjdAogICAgICAgIG15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAgICAgIyBpdGVtL2NoYW5nZV90aW1lID4gdm90aW5nL2NyZWF0ZV90aW1lCiAgICAgICAgbXkgJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA9ICRUaW1lT2JqZWN0LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGQVFEYXRhe0NoYW5nZWR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVDcmVhdGVkU3lzdGVtVGltZSA9ICRUaW1lT2JqZWN0LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICggJEl0ZW1DaGFuZ2VkU3lzdGVtVGltZSA8PSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgVm90ZSBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1ZvdGUnICkgewoKICAgICAgICAjIHVzZXIgY2FuJ3QgdXNlIHRoaXMgc3ViLWFjdGlvbiBpZiBpcyBub3QgZW5hYmxlZAogICAgICAgIGlmICggISRWb3RpbmcgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHVzZXIgY2FuIHZvdGUgb25seSBvbmNlIHBlciBGQVEgcmV2aXNpb24KICAgICAgICBpZiAoJEFscmVhZHlWb3RlZCkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFte0l0ZW1JRH0KICAgICAgICAgICAgICAgICAgICAuICc7TmF2PSROYXY7Tm90aWZ5PUFscmVhZHlWb3RlZCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgICAgICAgICAgbXkgJFJhdGUgICAgICAgID0gJEdldFBhcmFte1JhdGV9OwoKICAgICAgICAgICAgIyBzZW5kIGVycm9yIGlmIHJhdGUgaXMgbm90IGRlZmluZWQgaW4gY29uZmlnCiAgICAgICAgICAgIGlmICggISRWb3RpbmdSYXRlcy0+eyRSYXRlfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSBhZGQgdGhlIHZvdGUKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkRkFRT2JqZWN0LT5Wb3RlQWRkKAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICAgICAgICAgIEludGVyZmFjZSA9PiAkSW50ZXJmYWNlLT57U3RhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRHZXRQYXJhbXtSYXRlfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBzaG93IHRoZSB2b3RpbmcgZm9ybQogICAgICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CgogICAgICAgICAgICAgICAgIyByZWZyZXNoIEZBUSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJlZGlyZWN0IHRvIEZBUSB6b29tCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICAgICAgT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17SXRlbUlEfQogICAgICAgICAgICAgICAgICAgICAgICAuICc7TmF2PSROYXY7Tm90aWZ5PVRoYW5rcycKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlciBpcyBhYmxlIHRvIHZvdGUgYnV0IG5vIHJhdGUgaGFzIGJlZW4gc2VsZWN0ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBGQVEgem9vbQogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JyAuICRHZXRQYXJhbXtJdGVtSUR9IC4gJztOYXY9JE5hdjtOb3RpZnk9Tm9SYXRlJwogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEgKFN0aWxsIG5lZWRlZCBmb3IgUGxhaW5UZXh0KQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24sIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBubyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIEhUTUwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCB1c2VyIGluZm8gKENyZWF0ZWRCeSkKICAgIG15ICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlVc2VyfSA9ICIkVXNlckluZm97VXNlckZpcnN0bmFtZX0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX0iOwoKICAgICMgZ2V0IHVzZXIgaW5mbyAoQ2hhbmdlZEJ5KQogICAgJVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDaGFuZ2VkQnl9CiAgICApOwogICAgJFBhcmFte0NoYW5nZWRCeVVzZXJ9ID0gIiRVc2VySW5mb3tVc2VyRmlyc3RuYW1lfSAkVXNlckluZm97VXNlckxhc3RuYW1lfSI7CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gfHwgJEZBUURhdGF7Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJ0dyYXknOwogICAgfQoKICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgcnVuIEZBUSBtZW51IG1vZHVsZXMKICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIG15ICVNZW51cyAgID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJXskU2VsZn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnUG9wVXAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdCYWNrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnSGlzdG9yeUJhY2snOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0NvbmZpcm1hdGlvbkRpYWxvZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0FzQ29uZmlybWF0aW9uRGlhbG9nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcnVuIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgICAgICBNZW51SUQgID0+ICdNZW51JyAuICRNZW51LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IGFwcHJvdmFsIHN0YXRlCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CiAgICAgICAgJFBhcmFte0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVmlld0FwcHJvdmFsJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkVm90aW5nKSB7CgogICAgICAgICMgb3V0cHV0IHZvdGVzIG51bWJlciBpZiBhbnkKICAgICAgICBpZiAoICRGQVFEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdWaWV3Vm90ZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgZGlzcGxheSBhIE5vIFZvdGVzIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1ZpZXdOb1ZvdGVzJyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgRkFRIHBhdGgKICAgIG15ICRTaG93RkFRUGF0aCA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFBhdGhGb3JJdGVtID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgPT4gJE5hdiwKICAgICk7CiAgICBpZiAoJFNob3dGQVFQYXRoKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUVBhdGhJdGVtRWxlbWVudCcsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgTmF2ICA9PiAkTmF2LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgbGFuZ3VhZ2VzCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgb3V0cHV0IGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkZXIgYW5kIGFsbCBhdHRhY2htZW50cwogICAgICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRJbmRleCkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgbWVzc2FnZSBhYm91dCBsaW5rcyBpbiBpZnJhbWVzLCBpZiB1c2VyIGRpZG4ndCBjbG9zZSBpdCBhbHJlYWR5CiAgICBpZiAoICEkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgIG15ICRGQVFCb2R5ID0gJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBSZXR1cm5Db250ZW50ICAgPT4gMSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciBmYXEgb2JqZWN0CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkRkFRRGF0YXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyNTAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfUGxhaW4nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgIyBzaG93IEZBUSBWb3RpbmcKICAgICAgICBpZiAoJFZvdGluZykgewoKICAgICAgICAgICAgIyBnZXQgdm90aW5nIGNvbmZpZwogICAgICAgICAgICBteSAkU2hvd1ZvdGluZ0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlNob3cnKTsKICAgICAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkSW50ZXJmYWNlLT57TmFtZX0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGFscmVhZHkgdm90ZWQgYWZ0ZXIgbGFzdCBjaGFuZ2UKICAgICAgICAgICAgICAgIGlmICggISRBbHJlYWR5Vm90ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9GQVFWb3RpbmcoIEZBUURhdGEgPT4geyVGQVFEYXRhfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICAgICAgbXkgJExpbmtUYWJsZVZpZXdNb2RlID0gJENvbmZpZ09iamVjdC0+R2V0KCdMaW5rT2JqZWN0OjpWaWV3TW9kZScpOwoKICAgICAgICAjIGNyZWF0ZSB0aGUgbGluayB0YWJsZQogICAgICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnRkFRJywKICAgICAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMaW5rVGFibGVTdHJnID0+ICRMaW5rVGFibGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CgogICAgICAgICMgb25seSBjb252ZXJ0IEhUTUwgdG8gcGxhaW4gdGV4dCBpZiByaWNoIHRleHQgZWRpdG9yIGlzIG5vdCB1c2VkCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0gPSAkRkFRQm9keTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRGQVFEYXRhe0Z1bGxCb2R5fSA9ICRIVE1MVXRpbHNPYmplY3QtPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZBUUJvZHksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgcHVibGljIHN0YXRlIHR5cGUKICAgICAgICBteSAkUHVibGljU3RhdGVUeXBlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgaW4tbGluZSBpbWFnZSBsaW5rcyB0byBGQVEgaW1hZ2VzCiAgICAgICAgJEZBUURhdGF7RnVsbEJvZHl9CiAgICAgICAgICAgID1+IHN7IDxpbWcgW148Pl0rIEFjdGlvbj0oQWdlbnR8Q3VzdG9tZXJ8UHVibGljKUZBUSBbXjw+XSsgPiB9e31neG1zOwoKICAgICAgICAjIGdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFRpY2tldCBDb21wb3NlCiAgICAgICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICAgICAkUGFyYW17VXBkYXRlQXJ0aWNsZVN1YmplY3R9ID0gJFRpY2tldENvbXBvc2VDb25maWctPntVcGRhdGVBcnRpY2xlU3ViamVjdH0gfHwgMDsKICAgICAgICBpZiAoICRQYXJhbXtVcGRhdGVBcnRpY2xlU3ViamVjdH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXBkYXRlQXJ0aWNsZVN1YmplY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRTaG93T3JCbG9jazsKCiAgICAgICAgIyBzaG93ICJJbnNlcnQgVGV4dCIgYnV0dG9uCiAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dJbnNlcnRUZXh0QnV0dG9ufSApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e0luc2VydE1ldGhvZH0KICAgICAgICAgICAgICAgICYmICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5zZXJ0TWV0aG9kfSBlcSAnRnVsbCcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0RnVsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRUZXh0JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgRkFRIGFydGljbGUgaXMgcHVibGljCiAgICAgICAgaWYgKCAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gPT0gJFB1YmxpY1N0YXRlVHlwZS0+e1N0YXRlSUR9ICkgewoKICAgICAgICAgICAgbXkgJEhUVFBUeXBlID0gJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpOwogICAgICAgICAgICBteSAkRlFETiAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKICAgICAgICAgICAgbXkgJEJhc2VsaW5rID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfTsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUKICAgICAgICAgICAgJEJhc2VsaW5rCiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSB9e3B1YmxpYy5wbD99Z3htczsKCiAgICAgICAgICAgICRGQVFEYXRhe1B1YmxpY2xpbmt9ID0gJEhUVFBUeXBlIC4gJzovLycgLiAkRlFETiAuICRCYXNlbGluawogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRGQVFEYXRhe0l0ZW1JRH0iOwoKICAgICAgICAgICAgIyBzaG93ICJJbnNlcnQgTGluayIgYnV0dG9uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0TGlua0J1dHRvbn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbnNlcnRMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTaG93T3JCbG9jayA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyAiSW5zZXJ0IFRleHQgYW5kIExpbmsiIGJ1dHRvbgogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydFRleHRBbmRMaW5rQnV0dG9ufSApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5zZXJ0TWV0aG9kfQogICAgICAgICAgICAgICAgICAgICYmICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5zZXJ0TWV0aG9kfSBlcSAnRnVsbCcKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEZ1bGxBbmRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydFRleHRBbmRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNob3dPckJsb2NrID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENhbmNlbEJ1dHRvbkNsYXNzID0gJ1pvb21TbWFsbEJ1dHRvbic7CgogICAgICAgICMgc2hvdyB0aGUgIk9yIiBibG9jayBiZXR3ZWVuIHRoZSBidXR0b25zIGFuZCB0aGUgQ2FuY2VsICYgY2xvc2Ugd2luZG93IGxhYmVsCiAgICAgICAgaWYgKCRTaG93T3JCbG9jaykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ09yJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgJENhbmNlbEJ1dHRvbkNsYXNzIHRvICcnOwogICAgICAgICAgICAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnJzsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRWm9vbVNtYWxsJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ2FuY2VsQnV0dG9uQ2xhc3MgPT4gJENhbmNlbEJ1dHRvbkNsYXNzIHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBmb290ZXIKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgfQoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUVZvdGluZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIG91dHB1dCB2b3RpbmcgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIGNyZWF0ZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3V0cHV0CiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIFZhbHVlID0+ICRSYXRlVmFsdWUsCiAgICAgICAgICAgIFRpdGxlID0+ICRWb3RpbmdSYXRlcy0+eyRSYXRlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHZvdGUgcmF0aW5nIHJvdyBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgIG15ICRTdGFydEhpdCAgICAgICAgPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICBteSAkU2VhcmNoTGltaXQgICAgID0gJENvbmZpZy0+e1NlYXJjaExpbWl0fSB8fCAyMDA7CiAgICBteSAkU2VhcmNoUGFnZVNob3duID0gJENvbmZpZy0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgMzsKICAgIG15ICRTb3J0QnkgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5JyApIHx8ICcnOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXZlcnNlIHRoZSBoYXMgZm9yIGVhc3kgbG9va3VwCiAgICAgICAgbXkgJVJldmVyc2VDYXRlZ29yeVRyZWUgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgICRDYXRlZ29yeUlEID0gJFJldmVyc2VDYXRlZ29yeVRyZWV7JENhdGVnb3J5fSB8fCAwOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIG92ZXJ2aWV3IGluIHNlc3Npb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJycsCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgZGlyZWN0IHN1YmNhdGVnb3JpZXMgb2YgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ2F0ZWdvcnlJRHNSZWYgPSAkRkFRT2JqZWN0LT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIE1vZGUgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZXMgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLAogICAgICAgICAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslU3ViQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9DYXRlZ29yeURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFskT3JkZXJCeV0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICApOwoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgIG15ICRTb3J0Q2xhc3M7CgogICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0QXNjZW5kaW5nJzsKICAgIH0KICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgIH0KCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICBteSAlQ1NTU29ydDsKICAgIG15ICRDU1NTb3J0QnkgPSAkU29ydEJ5IC4gJ1NvcnQnOwogICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgVXAgICA9PiAnRG93bicsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlIGhlYWRlcgogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7JE9yZGVyQnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFN0YXJ0SGl0CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlYXJjaFBhZ2VTaG93biArICRTdGFydEhpdCApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRGQVFEYXRhe0NsZWFuVGl0bGV9ID0gJEZBUU9iamVjdC0+RkFRQXJ0aWNsZVRpdGxlQ2xlYW4oCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBibG9ja3MgdG8gdGVtcGxhdGUKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0ZBUURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGluayA9ICdTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkgLiAnOyc7CiAgICAkTGluayAuPSAnT3JkZXI9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpIC4gJzsnOwoKICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICBBY3Rpb24gICAgPT4gIkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIkN1c3RvbWVyRkFRRXhwbG9yZXIiLAogICAgKTsKCiAgICBpZiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPX4gbS88c3BhblxzY2xhc3M9IlBhZ2luYXRpb25MaW1pdCI+KFxkLiopPFwvc3Bhbj4vZyApIHsKICAgICAgICAkUGFnZU5hdntUb3RhbEhpdHN9ID0gJDE7CiAgICB9CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VhcmNoUGFnZVNob3duICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IFF1aWNrU2VhcmNoCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgRkFRIGl0ZW0gZGF0YQogICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlDdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBDYXRlZ29yeUlEICAgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbm8gcGVybWlzc2lvbiBlcnJvcgogICAgaWYgKAogICAgICAgICEkUGVybWlzc2lvbgogICAgICAgIHx8ICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgIyByZXdyaXRlIGxpbmtzIHRvIGVtYmVkZGVkIGltYWdlcyBmb3IgY3VzdG9tZXIgYW5kIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRJbnRlcmZhY2UtPntOYW1lfSBlcSAnZXh0ZXJuYWwnICkgewogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgZ2VuZXJhdGUgUERGIG91dHB1dAogICAgbXkgJFByaW50ZWRCeSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgncHJpbnRlZCBieScpOwogICAgbXkgJFRpbWUgICAgICA9ICRMYXlvdXRPYmplY3QtPntUaW1lfTsKICAgIG15ICVQYWdlOwoKICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQogICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgIH0KCiAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgICA9IDMwOwogICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICAgPSA0MDsKICAgICRQYWdle01hcmdpbkJvdHRvbX0gID0gNDA7CiAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgICA9IDQwOwogICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICAgPSAkSGVhZGVyUmlnaHQ7CiAgICAkUGFnZXtIZWFkbGluZVJpZ2h0fSA9ICRQcmludGVkQnkgLiAnICcKICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAuICRTZWxmLT57VXNlckxhc3RuYW1lfSAuICcgKCcKICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpICcKICAgICAgICAuICRUaW1lOwogICAgJFBhZ2V7UGFnZVRleHR9ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgJFBhZ2V7UGFnZUNvdW50fSA9IDE7CgogICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICk7CgogICAgIyBjcmVhdGUgZmlyc3QgUERGIHBhZ2UKICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgJVBhZ2UsCiAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICk7CiAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAoKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckZpcnN0bmFtZX0gLiAnICcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gLiAnICgnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJyknCiAgICAgICAgICAgIC4gJywgJyAuICRUaW1lLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICBteSAkUHJpbnRUYWcgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFByaW50VGFnLAogICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGQnLAogICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IEZBUSBpbmZvcm1hdGlvbgogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMoCiAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICk7CgogICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgUGFnZURhdGEgICAgICAgID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgKTsKCiAgICAjIGdldCB0aW1lIG9iamVjdAogICAgbXkgJFRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGltZScpOwoKICAgICMgcmV0dXJuIHRoZSBQREYgZG9jdW1lbnQKICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CiAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpLAogICAgKTsKICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREICk7CiAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0RkFRSGVhZGVySW5mbyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjcmVhdGUgbGVmdCB0YWJsZQogICAgbXkgJFRhYmxlTGVmdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtTdGF0ZX0gKSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG11bHRpIGxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgbGFuZ3VhZ2Ugcm93LCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIGNyZWF0ZSByaWdodCB0YWJsZQogICAgbXkgJFRhYmxlUmlnaHQ7CgogICAgIyBnZXQgZGVmYXVsdCB2b3Rpbmcgb3B0aW9uCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdWb3RlcycpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1Jlc3VsdCcpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0gLiAiICUiLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICB9CgogICAgIyBsYXN0IHVwZGF0ZSByb3cKICAgIHB1c2ggQHskVGFibGVSaWdodH0sIHsKICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICdEYXRlRm9ybWF0JywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBnZXQgUERGIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBnZXQgUERGIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkT3V0cHV0ID0gMDsKICAgIG15ICVGQVEgICAgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVByaW50IiktPntEeW5hbWljRmllbGR9OwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgRkFRIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBnZW5lcmF0ZSB0YWJsZQogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgRkFRIG9iamVjdAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBza2lwIGR5bmFtaWMgZmllbGQgaWYgaXMgbm90IGRlc2lnbmVkIGZvciBjdXN0b21lciBpbnRlcmZhY2UKICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGU7CgogICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkRkFRe0ZBUUlEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJFZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRWYWx1ZSBlcSAiIjsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fQogICAgICAgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApCiAgICAgICAgICAgIC4gJzonOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkVmFsdWVTdHJnLT57VmFsdWV9OwoKICAgICAgICAkUm93Kys7CiAgICAgICAgJE91dHB1dCA9IDE7CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICBpZiAoJE91dHB1dCkgewoKICAgICAgICAjIGdldCBQREYgb2JqZWN0CiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIER5bmFtaWMgRmllbGRzJyksCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJUZpZWxkczsKICAgIE5VTUJFUjoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGdldCBjb25maWcgb2YgRkFRIGZpZWxkCiAgICAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApOwoKICAgICAgICAjIHNraXAgb3ZlciBub3Qgc2hvd24gZmllbGRzCiAgICAgICAgbmV4dCBOVU1CRVIgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3sgIkZpZWxkIiAuICROdW1iZXIgfSA9ICRDb25maWc7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRGQVFPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkUERGT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgbXkgJFN1YmplY3QgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViamVjdCcgKTsKICAgIG15ICRCb2R5ICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0JvZHknICk7CgogICAgbXkgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdDsKICAgIG15ICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZzsKCiAgICBpZiAoICRTdWJqZWN0IHx8ICRCb2R5ICkgewoKICAgICAgICAjIEdldCB0aGUgbGFuZ3VhZ2UgZnJvbSB0aGUgdXNlciBhbmQgYWRkIHRoZSBkZWZhdWx0IGxhbmd1YWdlcyBmcm9tIHRoZSBjb25maWcuCiAgICAgICAgbXkgJFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzID0gJENvbmZpZy0+eydEZWZhdWx0TGFuZ3VhZ2VzJ30gfHwgW107CgogICAgICAgICMgQ2hlY2sgaWYgdGhlIHVzZXIgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgbXkgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc0xhbmd1YWdlID0gbWFwIHsgJF8gPT4gMSB9IEB7JFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzfTsKICAgICAgICBpZiAoICEkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzTGFuZ3VhZ2V7ICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHskUmVsYXRlZEFydGljbGVMYW5ndWFnZXN9LCAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfTsKICAgICAgICB9CgogICAgICAgIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPlJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0KAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICA9PiAkQm9keSwKICAgICAgICAgICAgTGFuZ3VhZ2VzID0+ICRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlcywKICAgICAgICAgICAgTGltaXQgICAgID0+ICRDb25maWctPntTaG93TGltaXR9IHx8IDEwLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggIUBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgKSB7CiAgICAgICAgICAgICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgR2VuZXJhdGUgdGhlIGh0bWwgZm9yIHRoZSB3aWRnZXQuCiAgICBteSAkQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCAgICAgICAgID0+IFxAUmVsYXRlZEZBUUFydGljbGVMaXN0LAogICAgICAgICAgICBSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZyA9PiAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmcsCiAgICAgICAgICAgIFZvdGVTdGFyc1Zpc2libGUgICAgICAgICAgICAgID0+ICRDb25maWctPntWb3RlU3RhcnNWaXNpYmxlfSwKICAgICAgICB9LAogICAgKTsKCiAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVyUmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZyA9PiAkQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgZW1wdHkgSlNPTiBvdXRwdXQgaWYgSlNPTiBpcyBlbXB0eQogICAgaWYgKCAhJEpTT04gKSB7CiAgICAgICAgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIEpTT04gcmVzcG9uc2UKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJER5bmFtaWNGaWVsZEZpbHRlciA9ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKCiAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBteSBAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGU7CgogICAgICAgIHB1c2ggQEN1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgIH0KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9IFxAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGZyb20gY29uc3RydWN0b3IKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgIG15ICRTdGFydEhpdCAgICAgICAgPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICBteSAkU2VhcmNoTGltaXQgICAgID0gJENvbmZpZy0+e1NlYXJjaExpbWl0fSB8fCAyMDA7CiAgICBteSAkU2VhcmNoUGFnZVNob3duID0gJENvbmZpZy0+e1NlYXJjaFBhZ2VTaG93bn0gfHwgNDA7CiAgICBteSAkU29ydEJ5ICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXInICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgbXkgJFByb2ZpbGUgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgbXkgJFNhdmVQcm9maWxlICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgbXkgJFRha2VMYXN0U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgbXkgJEVyYXNlVGVtcGxhdGUgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hUZW1wbGF0ZScgKSAmJiAkUHJvZmlsZSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFByb2ZpbGUiLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbC10ZXh0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dC54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1lbWJlciBleGNsdWRlIGF0dHJpYnV0ZXMKICAgIG15IEBFeGNsdWRlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeGNsdWRlJyApOwoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUnKTsKCiAgICAjIGxvYWQgcHJvZmlsZXMgc3RyaW5nIHBhcmFtcyAocHJlc3MgbG9hZCBwcm9maWxlKQogICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRQcm9maWxlICkgfHwgJFRha2VMYXN0U2VhcmNoICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgZWxzZSB7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFRpbWVTZWFyY2hUeXBlIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUKICAgICAgICAgICAgVm90ZVNlYXJjaE9wdGlvbiBSYXRlU2VhcmNoIFJhdGVTZWFyY2hUeXBlIFJhdGVTZWFyY2hPcHRpb24KICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0IEl0ZW1DcmVhdGVUaW1lU3RhcnREYXkgSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkgSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcgogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgKSkgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIG15IEBBcnJheSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gXEBBcnJheTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgRHluYW1pYyBmaWVsZHMgZm9ybSBwYXJhbSBvYmplY3QKICAgICAgICAjIGN5Y2xlIHRocm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgaXRlbSBuZWVkIHRvIGdldCBleGNsdWRlZAogICAgZm9yIG15ICRFeGNsdWRlIChARXhjbHVkZXMpIHsKICAgICAgICBpZiAoICRHZXRQYXJhbXskRXhjbHVkZX0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkR2V0UGFyYW17JEV4Y2x1ZGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2b3RlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259IGVxICdWb3RlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHJhdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gZXEgJ1JhdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBFTlYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgJFNlYXJjaFBhZ2VTaG93biA9ICRTZWFyY2hMaW1pdDsKICAgIH0KCiAgICAjIGNoZWNrIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb24nICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb24nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGRlZmF1bHQgbXVsdGkgbGFuZ3VhZ2Ugb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJEVyYXNlVGVtcGxhdGUgKSB7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkUHJvZmlsZSB8fCAhJFNhdmVQcm9maWxlICkgewogICAgICAgICAgICAkUHJvZmlsZSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPSRQcm9maWxlIgogICAgICAgICAgICAuICI7U29ydEJ5PSRTb3J0Qnk7T3JkZXJCeT0kT3JkZXJCeTtUYWtlTGFzdFNlYXJjaD0xIgogICAgICAgICAgICAuICI7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKCiAgICAgICAgIyBnZXQgc2Vzc2lvbiBvYmplY3QKICAgICAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKQogICAgICAgICRTYXZlUHJvZmlsZSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgaWYgKCAkU2F2ZVByb2ZpbGUgJiYgJFByb2ZpbGUgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRQYXJhbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JFBhcmFtTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgRkFRIHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5OwoKICAgICAgICAjIGN5Y2xlIHRocm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyB2YWx1ZSB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlYXJjaFBhcmFtZXRlciApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgdmFsdWUgdG8gZGlzcGxheQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntEaXNwbGF5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdm90ZXMgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSByYXRlIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICYmICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1JhdGV9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggc29ydCBrZXlzICVUaW1lTWFwICkgewoKICAgICAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUgc2V0dGluZ3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMjM6NTk6NTknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2hvdXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnZGF5JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtb250aCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDMwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAneWVhcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDM2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9yZSB0aGFuIC4uLiBhZ28KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgR2V0IFVzZXJDYXRlZ29yeUdyb3VwIEhhc2guCiAgICAgICAgIyBUaGlzIHJldHVybnMgYSBIYXNoIG9mIHRoZSBmb2xsb3dpbmcgc2FtcGxlIGRhdGEgc3RydWN0dXJlOgogICAgICAgICMKICAgICAgICAjICRDdXN0b21lclVzZXJDYXRHcm91cCA9IHsKICAgICAgICAjICAgJzEnID0+IHsKICAgICAgICAjICAgICAgICAgICczJyA9PiAnTWlzY1N1YicKICAgICAgICAjICAgICAgICB9LAogICAgICAgICMgICAnMycgPT4ge30sCiAgICAgICAgIyAgICcwJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgIyAgICAgICAgICAgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICMgICAgICAgICAgfSwKICAgICAgICAjICAgJzInID0+IHt9CiAgICAgICAgIyB9OwogICAgICAgICMKICAgICAgICAjIEtleXMgb2YgdGhlIG91dGVyIGhhc2ggaW5mb3JtIGFib3V0IHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIyAgIDAgU2hvd3MgdG9wIGxldmVsIENhdGVnb3J5SURzLgogICAgICAgICMgICAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgICAyIGFuZCAzIGFyZSBlbXB0eSBoYXNoZXMgYmVjYXVzZSB0aGVzZSBjYXRlZ29yaWVzIGRvbid0IGhhdmUgc3ViY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBpbm5lciBoYXNoZXMgYXJlIENhdGVnb3J5SURzIGEgdXNlciBpcyBhbGxvd2VkIHRvIGhhdmUgcm8gYWNjZXNzIHRvLgogICAgICAgICMgVmFsdWVzIGFyZSB0aGUgQ2F0ZWdvcnkgbmFtZXMuCgogICAgICAgIG15ICRDdXN0b21lclVzZXJDYXRHcm91cCA9ICRGQVFPYmplY3QtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBGaW5kIENhdGVnb3J5SURzIHRoZSBjdXJyZW50IFVzZXIgaXMgYWxsb3dlZCB0byB2aWV3LgogICAgICAgIG15ICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgJiYgcmVmICRDdXN0b21lclVzZXJDYXRHcm91cCBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAjIFNvIG5vdyB3ZSBoYXZlIHRvIGV4dHJhY3QgYWxsIENhdGVnb3J5IElEJ3Mgb2YgdGhlICJpbm5lciBoYXNoZXMiCiAgICAgICAgICAgICMgICAtPiBMb29wIHRocm91Z2ggdGhlIG91dGVyIGNhdGVnb3J5IElEJ3MuCiAgICAgICAgICAgIGZvciBteSAkTGV2ZWwgKCBzb3J0IGtleXMgJXskQ3VzdG9tZXJVc2VyQ2F0R3JvdXB9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIFZhbHVlIG9mIHRoZSBjdXJyZW50IGhhc2gga2V5IGlzIGEgaGFzaCByZWYuCiAgICAgICAgICAgICAgICBpZiAoICRDdXN0b21lclVzZXJDYXRHcm91cC0+eyRMZXZlbH0gJiYgcmVmICRDdXN0b21lclVzZXJDYXRHcm91cC0+eyRMZXZlbH0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE1hcCB0aGUga2V5cyBvZiB0aGUgaW5uZXIgaGFzaCB0byBhIFRlbXBJRHMgaGFzaC4KICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIERhdGEgc3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICMgICB7CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzInID0+ICdzZWNyZXQnCiAgICAgICAgICAgICAgICAgICAgIyAgIH0KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIGFmdGVyIG1hcHBpbmc6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICB7CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMScgPT4gMSwKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcyJyA9PiAxJwogICAgICAgICAgICAgICAgICAgICMgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICVUZW1wSURzID0gbWFwIHsgJF8gPT4gMSB9IGtleXMgJXsgJEN1c3RvbWVyVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzIHRvIHByb2R1Y2UgYSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyAgIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5IG9mIENhdGVnb3J5SURzLgogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2guCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyAgIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyAgIHNvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSBoYXMgdG8gYmUgcHJlc2VudAoKICAgICAgICBteSBAVmlld2FibGVGQVFJRHMgPSAoKTsKCiAgICAgICAgaWYgKEBDYXRlZ29yeUlEcykgewoKICAgICAgICAgICAgIyBwZXJmb3JtIEZBUSBzZWFyY2gKICAgICAgICAgICAgQFZpZXdhYmxlRkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICAgICAgICAgPT4gXEBDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkVGltZU9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICAjIGdldCB0aGUgRkFRIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgICAgICBteSBAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENTVkR5bmFtaWNGaWVsZCA9IFxAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5mbyBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwoKICAgICAgICAgICAgICAgICMgZm9ybWF0IHRoZSBjaGFuZ2UgdGltZQogICAgICAgICAgICAgICAgJENTVkluZm97Q2hhbmdlZH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0JywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICBxdyhTdGF0ZSBDaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENTVkluZm97JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gRkFRIGl0ZW0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NlbWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpLT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXR1cm4gQ1NWIHRvIGRvd25sb2FkCiAgICAgICAgICAgIG15ICRDU1ZGaWxlID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgICMgZ2V0IFBERiBvYmplY3QKICAgICAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgICAgIG15IEBQREZEYXRhOwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBkZXRhaWxzCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNoYW5nZSBkYXRlIHRvIGxvbmcgZm9ybWF0CiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGIFJvd3MKICAgICAgICAgICAgICAgIG15IEBQREZSb3c7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBsYW5ndWFnZSByb3cKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRGQVFEYXRhe1N0YXRlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRDaGFuZ2VkOwogICAgICAgICAgICAgICAgcHVzaCBAUERGRGF0YSwgXEBQREZSb3c7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDZWxsRGF0YTsKCiAgICAgICAgICAgICMgb3V0cHV0ICdObyBSZXN1bHQnLCBpZiBubyBjb250ZW50IHdhcyBnaXZlbgogICAgICAgICAgICBpZiAoQFBERkRhdGEpIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgaGVhZGVyCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaXRsZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDYXRlZ29yeScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGNvcnJlY3QgaGVhZGVyIGluZGV4CiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAgICAgJE5leHRIZWFkZXJJbmRleCAgICAgICAgICAgICAgID0gNDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsgJE5leHRIZWFkZXJJbmRleCArIDEgXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NoYW5nZWQnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGaXJzdG5hbWV9IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gLiAnICgnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJFbWFpbH0gLiAnKScKICAgICAgICAgICAgICAgICAgICAuICcsICcgLiAkVGltZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtMTQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBQQUdFOgogICAgICAgICAgICBmb3IgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRfLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIHRoZSBQREYgZG9jdW1lbnQKICAgICAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICBteSAkUERGU3RyaW5nID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgcmVzdWx0cyB0byBzaG93CiAgICAgICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3Q29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUU92ZXJ2aWV3Iik7CgogICAgICAgICAgICAjIGdldCB0aGUgdGlja2V0IGR5bmFtaWMgZmllbGRzIGZvciBvdmVydmlldyBkaXNwbGF5CiAgICAgICAgICAgIG15ICRPdmVydmlld0R5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICBGaWVsZEZpbHRlciA9PiAkT3ZlcnZpZXdDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgICAgICBteSBAT3ZlcnZpZXdDdXN0b21lckR5bmFtaWNGaWVsZHM7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRPdmVydmlld0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGU7CgogICAgICAgICAgICAgICAgcHVzaCBAT3ZlcnZpZXdDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMgdGFibGUgaGVhZGVycwogICAgICAgICAgICAjIGN5Y2xlIHRocm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbXkgJE9yZGVyID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFNvcnRCeQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU29ydEJ5IGVxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e09yZGVyfSAmJiAoICRTZWxmLT57T3JkZXJ9IGVxICdVcCcgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlciA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlciA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyICAgICAgICAgICAgPT4gJE9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJEZBUUlEIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdSYXRlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgZWFjaCBhdHRyaWJ1dGUgaW4gc2VhcmNoIHJlc3VsdHMgYXJlYS4KICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJUF0dHJpYnV0ZU1hcCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVmaW5lZCBieSB0aGUgdXNlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGUgbmFtZSBhbmQgdHJhbnNsYXRlIGl0IGlmIGFwcGxpZXMKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e05hbWV9OwogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57VHJhbnNsYXRhYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZVZhbHVlOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlcyBpcyBhbiBhcnJheSB0byBwYXJzZSBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXRlZ29yeSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ0NhdGVnb3J5SURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBsb25nIG5hbWUgZm9yIGFsbCBjdXN0b21lciBjYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2UgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBMYW5ndWFnZU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGlzIGFuIHNjYWxhciBhbmQgY2FuIGJlIHNldCBkaXJlY3RseQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJEdldFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdUaW1lU2VhcmNoVHlwZScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnREYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdG9wRGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wWWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BNb250aH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BEYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBiZXR3ZWVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTdGFydERhdGUgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU3RvcERhdGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hcHBpbmcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgd2l0aGluIHRoZSBsYXN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9ICRNYXBwaW5nLT57ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gLiAnKHMpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZvdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSApIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFte1ZvdGVTZWFyY2h9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdSYXRlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtSYXRlU2VhcmNofSAuICclJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICEkRHluYW1pY0ZpZWxkU2VhcmNoRGlzcGxheXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkTGluayA9ICdQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IEhUTUwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgU2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgICAgICBteSAkU29ydENsYXNzOwoKICAgICAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAgICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgICAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdVcCcpLAogICAgICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnRG93bicpLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQcm9maWxlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGRlbGV0ZSBwcm9maWxlCiAgICAgICAgaWYgKCAkRXJhc2VUZW1wbGF0ZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwogICAgICAgICAgICAlR2V0UGFyYW0gPSAoKTsKICAgICAgICAgICAgJFByb2ZpbGUgID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c30tPntEeW5hbWljRmllbGR9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlICAgICAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBNYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJFRyZWVWaWV3ID0gMDsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpIGVxICd0cmVlJyApIHsKICAgICAgICAkVHJlZVZpZXcgPSAxOwogICAgfQoKICAgICMgc2V0IG91dHB1dCBmb3JtYXRzIGxpc3QKICAgIG15ICVSZXN1bHRGb3JtID0gKAogICAgICAgIE5vcm1hbCA9PiBUcmFuc2xhdGFibGUoJ05vcm1hbCcpLAogICAgICAgIFByaW50ICA9PiBUcmFuc2xhdGFibGUoJ1ByaW50JyksCiAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JVJlc3VsdEZvcm19LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Jlc3VsdEZvcm0nLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IHByb2ZpbGVzIGxpc3QKICAgIG15ICVQcm9maWxlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyktPlNlYXJjaFByb2ZpbGVMaXN0KAogICAgICAgIEJhc2UgICAgICA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwoKICAgICMgYnVpbGQgcHJvZmlsZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUHJvZmlsZXN9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUHJvZmlsZScsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzIGxpc3QKICAgIG15ICRDYXRlZ29yaWVzID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBjYXRlZ29yaWVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17Q2F0ZWdvcmllc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBOYW1lICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtDYXRlZ29yeUlEc30sCiAgICAgICAgVHJlZVZpZXcgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJVZvdGluZ09wZXJhdG9ycyA9ICgKICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VxdWFscycpLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuJyksCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4gZXF1YWxzJyksCiAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4nKSwKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbiBlcXVhbHMnKSwKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICAkUGFyYW17UmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2h9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIExhc3QgICA9PiBUcmFuc2xhdGFibGUoJ3dpdGhpbiB0aGUgbGFzdCAuLi4nKSwKICAgICAgICAgICAgQmVmb3JlID0+IFRyYW5zbGF0YWJsZSgnbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gVHJhbnNsYXRhYmxlKCdtaW51dGUocyknKSwKICAgICAgICAgICAgaG91ciAgID0+IFRyYW5zbGF0YWJsZSgnaG91cihzKScpLAogICAgICAgICAgICBkYXkgICAgPT4gVHJhbnNsYXRhYmxlKCdkYXkocyknKSwKICAgICAgICAgICAgd2VlayAgID0+IFRyYW5zbGF0YWJsZSgnd2VlayhzKScpLAogICAgICAgICAgICBtb250aCAgPT4gVHJhbnNsYXRhYmxlKCdtb250aChzKScpLAogICAgICAgICAgICB5ZWFyICAgPT4gVHJhbnNsYXRhYmxlKCd5ZWFyKHMpJyksCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnR9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNyZWF0ZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCA9PiAnSXRlbUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICApOwoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1NlYXJjaCcsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBvdXRwdXQgRHluYW1pYyBmaWVsZHMgYmxvY2tzCiAgICAjIGN5Y2xlIHRocm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfS0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfS0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRlZmF1bHQgbXVsdGkgbGFuZ3VhZ2Ugb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICBteSAlVXNlclByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRVc2VyUHJlZmVyZW5jZXN7VXNlckN1c3RvbWVyRG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwogICAgJEdldFBhcmFte1JhdGV9ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUmF0ZScgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2F2ZSwgaWYgYnJvd3NlciBsaW5rIG1lc3NhZ2Ugd2FzIGNsb3NlZAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Jyb3dzZXJMaW5rTWVzc2FnZScgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnVXNlckN1c3RvbWVyRG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlJywKICAgICAgICAgICAgVmFsdWUgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAxLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IEZBUSBpdGVtIGRhdGEKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZSBsaXN0CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoCiAgICAgICAgISRQZXJtaXNzaW9uCiAgICAgICAgfHwgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkVmFsaWRJRExvb2t1cHsgJEZBUURhdGF7VmFsaWRJRH0gfQogICAgICAgIHx8ICEkSW50ZXJmYWNlU3RhdGVzLT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkRmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgRmlsZUlEIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRHZXRQYXJhbXtGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVGaWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdm90aW5nIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgZ2V0IEZBUSB2b3RlIGluZm9ybWF0aW9uCiAgICBteSAkVm90ZURhdGE7CiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRWb3RlRGF0YSA9ICRGQVFPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgIENyZWF0ZUJ5ICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e1N0YXRlSUR9LAogICAgICAgICAgICBJUCAgICAgICAgPT4gJEVOVnsnUkVNT1RFX0FERFInfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgdXNlciBhbHJlYWR5IHZvdGVkIHRoaXMgRkFRIGl0ZW0KICAgIG15ICRBbHJlYWR5Vm90ZWQ7CiAgICBpZiAoJFZvdGVEYXRhKSB7CgogICAgICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICAgICAgbXkgJFRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGltZScpOwoKICAgICAgICAjIGl0ZW0vY2hhbmdlX3RpbWUgPiB2b3RpbmcvY3JlYXRlX3RpbWUKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7Q2hhbmdlZH0gfHwgJycsCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZUNyZWF0ZWRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJFZvdGVEYXRhLT57Q3JlYXRlZH0gfHwgJycsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRJdGVtQ2hhbmdlZFN5c3RlbVRpbWUgPD0gJFZvdGVDcmVhdGVkU3lzdGVtVGltZSApIHsKICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFZvdGUgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1ZvdGUnICkgewoKICAgICAgICAjIGN1c3RvbWVyIGNhbid0IHVzZSB0aGlzIHN1YmFjdGlvbiBpZiBpcyBub3QgZW5hYmxlZAogICAgICAgIGlmICggISRWb3RpbmcgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgdXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbgogICAgICAgIGlmICgkQWxyZWFkeVZvdGVkKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2b3RlIGlmIGFueQogICAgICAgIGVsc2lmICggZGVmaW5lZCAkR2V0UGFyYW17UmF0ZX0gKSB7CgogICAgICAgICAgICAjIGdldCByYXRlcyBjb25maWcKICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgICAgICAgICAgbXkgJFJhdGUgICAgICAgID0gJEdldFBhcmFte1JhdGV9OwoKICAgICAgICAgICAgIyBzZW5kIGVycm9yIGlmIHJhdGUgaXMgbm90IGRlZmluZWQgaW4gY29uZmlnCiAgICAgICAgICAgIGlmICggISRWb3RpbmdSYXRlcy0+eyRSYXRlfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGFkZCB0aGUgdm90ZQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBSYXRlICAgICAgPT4gJEdldFBhcmFte1JhdGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZG8gbm90IHNob3cgdGhlIHZvdGluZyBmb3JtCiAgICAgICAgICAgICAgICAkQWxyZWFkeVZvdGVkID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlZnJlc2ggRkFRIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgIEluZm8gPT4gVHJhbnNsYXRhYmxlKCdUaGFua3MgZm9yIHlvdXIgdm90ZSEnKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlciBpcyBhYmxlIHRvIHZvdGUgYnV0IG5vIHJhdGUgaGFzIGJlZW4gc2VsZWN0ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdObyByYXRlIHNlbGVjdGVkIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXBhcmUgZmllbGRzIGRhdGEgKFN0aWxsIG5lZWRlZCBmb3IgUGxhaW5UZXh0KQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBjdXN0b21lciBpbnRlcmZhY2UKICAgICAgICBpZiAoICRJbnRlcmZhY2UtPntOYW1lfSBlcSAnZXh0ZXJuYWwnICkgewoKICAgICAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtjdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tfWd4bXM7CgogICAgICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9ID1+IHN7CiAgICAgICAgICAgICAgICBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHZvdGluZyByZXN1bHRzCiAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJExheW91dE9iamVjdC0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgKTsKCiAgICBpZiAoICEkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9IHx8ICRGQVFEYXRhe1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICdHcmF5JzsKICAgIH0KCiAgICAjIHNob3cgYmFjayBsaW5rCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgZ2V0IG11bHRpLWxhbmd1YWdlIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgdm90ZXMKICAgIGlmICgkVm90aW5nKSB7CgogICAgICAgICMgYWx3YXlzIGRpc3BsYXlzIFZvdGVzIHJlc3VsdCBldmVuIGlmIGl0cyAwCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1ZpZXdWb3RlcycsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgbXkgJFNob3dGQVFQYXRoID0gJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBQYXRoRm9ySXRlbSA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoJFNob3dGQVFQYXRoKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUVBhdGhJdGVtRWxlbWVudCcsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBrZXl3b3JkcyBhcyBzZWFyY2ggbGlua3MKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewoKICAgICAgICAjIHJlcGxhY2UgY29tbWFzIGFuZCBzZW1pY29sb25zCiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCAkRkFRRGF0YXtLZXl3b3Jkc307CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgcmF0aW5nIHN0YXJzCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cyBpZiBhbnkKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzCiAgICBpZiAoQEF0dGFjaG1lbnRJbmRleCkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50SGVhZGVyJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRJbmRleCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgbWVzc2FnZSBhYm91dCBsaW5rcyBpbiBpZnJhbWVzLCBpZiB1c2VyIGRpZG4ndCBjbG9zZSBpdCBhbHJlYWR5CiAgICBpZiAoICEkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIENvbnRlbnQKICAgICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGlja2V0IG9iamVjdAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHByaW50IHN0cmluZyBmb3IgdGhpcyBkeW5hbWljIGZpZWxkCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjUwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgVm90aW5nCiAgICBpZiAoJFZvdGluZykgewoKICAgICAgICAjIGdldCB2b3RpbmcgY29uZmlnCiAgICAgICAgbXkgJFNob3dWb3RpbmdDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpTaG93Jyk7CiAgICAgICAgaWYgKCAkU2hvd1ZvdGluZ0NvbmZpZy0+eyAkSW50ZXJmYWNlLT57TmFtZX0gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgYWxyZWFkeSB2b3RlZCBhZnRlciBsYXN0IGNoYW5nZQogICAgICAgICAgICBpZiAoICEkQWxyZWFkeVZvdGVkICkgewogICAgICAgICAgICAgICAgJFNlbGYtPl9GQVFWb3RpbmcoIEZBUURhdGEgPT4geyVGQVFEYXRhfSApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgbG9nIGFjY2VzcyB0byB0aGlzIEZBUSBpdGVtCiAgICAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICksCiAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntOYW1lfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVpvb20nLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgdm90aW5nIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmcnLAogICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICk7CgogICAgIyBnZXQgVm90aW5nIHJhdGVzIHNldHRpbmcKICAgIG15ICRWb3RpbmdSYXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlJhdGVzJyk7CiAgICBmb3IgbXkgJFJhdGVWYWx1ZSAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7JFZvdGluZ1JhdGVzfSApIHsKCiAgICAgICAgIyBjcmVhdGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIG91dHB1dAogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB2b3RlIHJhdGluZyByb3cgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nUmF0ZVJvdycsCiAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVkaXJlY3QgPSAkRU5We1JFUVVFU1RfVVJJfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmICgkUmVkaXJlY3QpIHsKICAgICAgICAkUmVkaXJlY3QgPX4gc3tQdWJsaWNGQVF9e1B1YmxpY0ZBUVpvb219eG1zOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0ID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdCwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRRXhwbG9yZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICBteSAkU29ydEJ5ICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXInICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBnZXQgSXRlbSBJRAogICAgbXkgJEl0ZW1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICkgfHwgMDsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgSXRlbUlEIHBhcmFtZXRlciB3YXMgc2VudCBhbmQgcmVkaXJlY3QgdG8gRkFRIGFydGljbGUgem9vbSBzY3JlZW4KICAgIGlmICgkSXRlbUlEKSB7CgogICAgICAgICMgcmVkaXJlY3QgdG8gRkFRIHpvb20KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JyAuICRJdGVtSUQgKTsKICAgIH0KCiAgICAjIGdldCBjYXRlZ29yeSBJRAogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIGNhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmV2ZXJzZSB0aGUgaGFzIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgIG15ICVDYXRlZ29yeURhdGE7CiAgICBpZiAoJENhdGVnb3J5SUQpIHsKCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgUlNTIGZlZWQgbGluayBmb3IgbmV3IEZBUSBhcnRpY2xlcyBpbiB0aGUgYnJvd3NlciBVUkwgYmFyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKScpLAogICAgICAgICAgICBIcmVmID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIFJTUyBmZWVkIGxpbmsgZm9yIGNoYW5nZWQgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnYXBwbGljYXRpb24vcnNzK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKSwKICAgICAgICAgICAgSHJlZiA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJ0FjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DaGFuZ2VkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBSU1MgZmVlZCBsaW5rIGZvciBUb3AtMTAgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249UHVibGljRkFRUlNTO1R5cGU9VG9wMTAnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgID0+ICRGQVFPYmplY3QsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENhdGVnb3J5SURzUmVmID0gJEZBUU9iamVjdC0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgTW9kZSAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgc3ViY2F0ZWdvcmllcyBsaXN0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzCiAgICBpZiAoICRDYXRlZ29yeUlEc1JlZiAmJiByZWYgJENhdGVnb3J5SURzUmVmIGVxICdBUlJBWScgJiYgQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAjIHNob3cgZGF0YSBmb3IgZWFjaCBzdWJjYXRlZ29yeQogICAgICAgIGZvciBteSAkU3ViQ2F0ZWdvcnlJRCAoIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgIG15ICVTdWJDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2Ygc3ViY2F0ZWdvcmllcyBvZiB0aGlzIHN1YmNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe0FydGljbGVDb3VudH0gPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgSXRlbVN0YXRlcyAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVN1YkNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vQ2F0ZWdvcnlEYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlRkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyRPcmRlckJ5XSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIENhdGVnb3J5SURzICAgICAgPT4gWyRDYXRlZ29yeUlEXSwKICAgICk7CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcwogICAgbXkgJFNvcnRDbGFzczsKCiAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgfQogICAgZWxzaWYgKCAkT3JkZXJCeSBlcSAnVXAnICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydERlc2NlbmRpbmcnOwogICAgfQoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MgdG8gdGhlIGNvcnJlY3QgZmllbGQKICAgIG15ICVDU1NTb3J0OwogICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAkQ1NTU29ydHskQ1NTU29ydEJ5fSA9ICRTb3J0Q2xhc3M7CgogICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgIERvd24gPT4gJ1VwJywKICAgICAgICBVcCAgID0+ICdEb3duJywKICAgICk7CgogICAgIyBzaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFJdGVtTGlzdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7JE9yZGVyQnl9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IG11bHRpIGxhbmd1YWdlIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlIGhlYWRlcgogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciA9PiAkTmV3T3JkZXJ7JE9yZGVyQnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgaWYgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAjIGNyZWF0ZSBiYWNrIGxpbmsgZm9yIEZBUSBab29tIHNjcmVlbgogICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQ7IgogICAgICAgICAgICAuICJTb3J0Qnk9JFNvcnRCeTtPcmRlcj0kT3JkZXJCeTtTdGFydEhpdD0kU3RhcnRIaXQiOwoKICAgICAgICAjIGVuY29kZSBiYWNrIGxpbmsgdG8gQmFzZTY0IGZvciBlYXN5IEhUTUwgdHJhbnNwb3J0CiAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRTZWFyY2hQYWdlU2hvd24gKyAkU3RhcnRIaXQgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkRkFRRGF0YXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgWm9vbUJhY2tMaW5rID0+ICRab29tQmFja0xpbmssCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIlB1YmxpY0ZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VhcmNoUGFnZVNob3duICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFNlYXJjaEJhY2tMaW5rID0gIkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIjsKCiAgICAjIGVuY29kZSBiYWNrIGxpbmsgdG8gQmFzZTY0IGZvciBlYXN5IEhUTUwgdHJhbnNwb3J0CiAgICAkU2VhcmNoQmFja0xpbmsgPSBNSU1FOjpCYXNlNjQ6OmVuY29kZV9iYXNlNjQoJFNlYXJjaEJhY2tMaW5rKTsKCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgU2VhcmNoQmFja0xpbmsgID0+ICRTZWFyY2hCYWNrTGluaywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRvcCB0ZW4gYXJ0aWNsZXMKICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGVycm9yCiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IG5vIHBlcm1pc3Npb24gZXJyb3IKICAgIGlmICgKICAgICAgICAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRJbnRlcmZhY2VTdGF0ZXMtPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBjdXN0b21lciBhbmQgcHVibGljIGludGVyZmFjZQogICAgICAgIGlmICggJEludGVyZmFjZS0+e05hbWV9IGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tfWd4bXM7CiAgICAgICAgfQoKICAgICAgICAjIG5vIHF1b3RpbmcgaWYgSFRNTCB2aWV3IGlzIGVuYWJsZWQKICAgICAgICBuZXh0IEZJRUxEIGlmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgSFRNTCBxdW90aW5nCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdlbmVyYXRlIFBERiBvdXRwdXQKICAgIG15ICRUaW1lID0gJExheW91dE9iamVjdC0+e1RpbWV9OwogICAgbXkgJVBhZ2U7CgogICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICRQYWdle01heFBhZ2VzfSA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICB9CiAgICBteSAkSGVhZGVyUmlnaHQgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICRGQVFEYXRhe051bWJlcn07CiAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgbXkgJFRpdGxlICAgICAgICA9ICRIZWFkZXJSaWdodDsKICAgIGlmICggJEZBUURhdGF7VGl0bGV9ICkgewogICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgJFRpdGxlIC49ICcgLyAnIC4gJEZBUURhdGF7VGl0bGV9OwogICAgfQoKICAgICRQYWdle01hcmdpblRvcH0gICAgPSAzMDsKICAgICRQYWdle01hcmdpblJpZ2h0fSAgPSA0MDsKICAgICRQYWdle01hcmdpbkJvdHRvbX0gPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgPSA0MDsKICAgICRQYWdle0hlYWRlclJpZ2h0fSAgPSAkSGVhZGVyUmlnaHQ7CiAgICAkUGFnZXtQYWdlVGV4dH0gICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ICAgID0gMTsKCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgY3JlYXRlIG5ldyBQREYgZG9jdW1lbnQKICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICApOwoKICAgICMgY3JlYXRlIGZpcnN0IFBERiBwYWdlCiAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICVQYWdlLAogICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICApOwogICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICBGb250U2l6ZSA9PiAxMywKCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkVGltZSwKICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNCwKICAgICk7CgogICAgIyB0eXBlIG9mIHByaW50IHRhZwogICAgbXkgJFByaW50VGFnID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZSBQcmludCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICBIZWlnaHQgICA9PiA5LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICBBbGlnbiAgICA9PiAncmlnaHQnLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCBGQVEgaW5mb3JtYXRpb24KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFEeW5hbWljRmllbGRzKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgICRTZWxmLT5fUERGT3VwdXRGQVFDb250ZW50KAogICAgICAgIFBhZ2VEYXRhICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICk7CgogICAgIyBnZXQgdGltZSBvYmplY3QKICAgIG15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAjIHJldHVybiB0aGUgUERGIGRvY3VtZW50CiAgICBteSAkRmlsZW5hbWUgPSAnRkFRXycgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgbXkgKCAkcywgJG0sICRoLCAkRCwgJE0sICRZICkgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJEYXRlKAogICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKSwKICAgICk7CiAgICAkTSA9IHNwcmludGYoICIlMDJkIiwgJE0gKTsKICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAkbSA9IHNwcmludGYoICIlMDJkIiwgJG0gKTsKICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjcmVhdGUgbGVmdCB0YWJsZQogICAgbXkgJFRhYmxlTGVmdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtDYXRlZ29yeU5hbWV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtTdGF0ZX0gKSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG11bHRpIGxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgbGFuZ3VhZ2Ugcm93LCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIGNyZWF0ZSByaWdodCB0YWJsZQogICAgbXkgJFRhYmxlUmlnaHQ7CgogICAgIyBnZXQgZGVmYXVsdCB2b3Rpbmcgb3B0aW9uCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgdm90aW5nIHJvd3MsIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkVGFibGVSaWdodCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdWb3RlcycpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1Jlc3VsdCcpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0gLiAiICUiLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICB9CgogICAgIyBsYXN0IHVwZGF0ZSByb3cKICAgIHB1c2ggQHskVGFibGVSaWdodH0sIHsKICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgdXBkYXRlJykgLiAnOicsCiAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICdEYXRlRm9ybWF0TG9uZycsCiAgICAgICAgKSwKICAgIH07CgogICAgbXkgJFJvd3MgPSBAeyRUYWJsZUxlZnR9OwogICAgaWYgKCBAeyRUYWJsZVJpZ2h0fSA+ICRSb3dzICkgewogICAgICAgICRSb3dzID0gQHskVGFibGVSaWdodH07CiAgICB9CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgJFJvdy0tOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e1ZhbHVlfTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17Q29udGVudH0gICAgICAgICA9ICcgJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17QmFja2dyb3VuZENvbG9yfSA9ICcjRkZGRkZGJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVs0XXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMl17V2lkdGh9ID0gNDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzNde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bNF17V2lkdGh9ID0gMTcwLjU7CgogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICMgZ2V0IFBERiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0S2V5d29yZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwoKICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRGQVFEYXRhe0tleXdvcmRzfSB8fCAnJzsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAjIGdldCBQREYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRGQVFEeW5hbWljRmllbGRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkT3V0cHV0ID0gMDsKICAgIG15ICVGQVEgICAgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFQcmludCIpLT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0ZBUSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICREeW5hbWljRmllbGRGaWx0ZXIgfHwge30sCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZW5lcmF0ZSB0YWJsZQogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgRkFRIG9iamVjdAogICAgRFlOQU1JQ0ZJRUxEQ09ORklHOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIHNraXAgZHluYW1pYyBmaWVsZCBpZiBpcyBub3QgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRGQVF7RkFRSUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgJFZhbHVlIGVxICIiOwoKICAgICAgICAjIGdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkKICAgICAgICAgICAgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICRSb3crKzsKICAgICAgICAkT3V0cHV0ID0gMTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIG91dHB1dCBGQVEgZHluYW1pYyBmaWVsZHMKICAgIGlmICgkT3V0cHV0KSB7CgogICAgICAgICMgZ2V0IFBERiBvYmplY3QKICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgRHluYW1pYyBGaWVsZHMnKSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgTlVNQkVSOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IE5VTUJFUiBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc29ydCBzaG93biBmaWVsZHMgYnkgcHJpb3JpdHkKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQgeyAkRmllbGRzeyRhfS0+e1ByaW99IDw9PiAkRmllbGRzeyRifS0+e1ByaW99IH0ga2V5cyAlRmllbGRzICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICk7CgogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRBc2NpaUZpZWxkIHx8ICcnOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAgICAgIyBnZXQgUERGIG9iamVjdAogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW4gcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgUlNTIHR5cGUKICAgIG15ICRUeXBlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFR5cGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUeXBlIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFR5cGUgIX4gbXsgQ3JlYXRlZCB8IENoYW5nZWQgfCBUb3AxMCB9eG1zICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnKSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBJdGVtSURzOwogICAgbXkgJFRpdGxlOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkRkFRT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBUb3AtMTAgRkFRIGFydGljbGVzCiAgICBpZiAoICRUeXBlIGVxICdUb3AxMCcgKSB7CgogICAgICAgICMgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIHRoZSBpbnRlcmZhY2UgbmFtZQogICAgICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkRkFRT2JqZWN0LT5GQVFUb3AxMEdldCgKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntOYW1lfSwKICAgICAgICAgICAgTGltaXQgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0JykgfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKSB8fCBbXTsKCiAgICAgICAgQEl0ZW1JRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAeyRUb3AxMEl0ZW1JRHNSZWZ9OwoKICAgICAgICAjIGJ1aWxkIHRoZSB0aXRsZQogICAgICAgICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIEFydGljbGVzIChUb3AgMTApJyk7CiAgICB9CgogICAgIyBzZWFyY2ggdGhlIEZBUSBhcnRpY2xlcwogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZSBsaXN0CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgY29tcGxldGUgaW50ZXJmYWNlIGhhc2gKICAgICAgICBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskVHlwZV0sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydEb3duJ10sCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAyMCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCB0aGUgdGl0bGUKICAgICAgICBpZiAoICRUeXBlIGVxICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKScpOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRUeXBlIGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIFJTUyBvYmplY3Qgb2JqZWN0CiAgICBteSAkUlNTT2JqZWN0ID0gWE1MOjpSU1M6OlNpbXBsZUdlbi0+bmV3KAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgiSHR0cFR5cGUiKQogICAgICAgICAgICAuICc6Ly8nCiAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCJGUUROIikKICAgICk7CgogICAgIyBnZW5lcmF0ZSB0aGUgUlNTIHRpdGxlCiAgICAkVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJykgLiAnICcgLiAkVGl0bGU7CgogICAgJFJTU09iamVjdC0+dGl0bGUoJFRpdGxlKTsKCiAgICAjIGdldCB0aGUgRkFRIGRhdGEKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlSXRlbURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgcHJldmlldyBvZiB0aGUgZmlyc3QgdHdvIGZpZWxkcwogICAgICAgIG15ICRQcmV2aWV3ID0gJyc7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgaWYgKCAkSXRlbURhdGF7IkZpZWxkJENvdW50In0gKSB7CiAgICAgICAgICAgICAgICAkUHJldmlldyAuPSAkSXRlbURhdGF7IkZpZWxkJENvdW50In07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY29udmVydCBwcmV2aWV3IHRvIEFTQ0lJCiAgICAgICAgJFByZXZpZXcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkUHJldmlldyApOwoKICAgICAgICAjIHJlZHVjZSBzaXplIG9mIHByZXZpZXcKICAgICAgICAkUHJldmlldyA9fiBzeyBcQSAoIC57ODB9ICkgLiogXHogfXskMVxbXC5cLlxdfWd4bXM7CgogICAgICAgICMgYnVpbGQgdGhlIFJTUyBpdGVtCiAgICAgICAgJFJTU09iamVjdC0+aXRlbSgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAgICAgICAgICAgICAuICI6Ly8iCiAgICAgICAgICAgICAgICAuICRDb25maWdPYmplY3QtPkdldCgiRlFETiIpCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiwKICAgICAgICAgICAgJEl0ZW1EYXRhe1RpdGxlfSwKICAgICAgICAgICAgJFByZXZpZXcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgdG8gc3RyaW5nCiAgICBteSAkT3V0cHV0ID0gJFJTU09iamVjdC0+YXNfc3RyaW5nKCk7CgogICAgIyBjaGVjayBlcnJvcgogICAgaWYgKCAhJE91dHB1dCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHRoZSBSU1MgZmVlZAogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntEeW5hbWljRmllbGRGaWx0ZXJ9ID0gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkRmlsdGVyfSB8fCB7fSwKICAgICk7CgogICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgbXkgQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICBwdXNoIEBDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICB9CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSBcQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBmcm9tIGNvbnN0cnVjdG9yCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDQwOwogICAgbXkgJFNvcnRCeSAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IEZBUSBudW1iZXIKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IGZ1bGwtdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGxUZXh0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0LnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIGV4Y2x1ZGUgYXR0cmlidXRlcwogICAgbXkgQEV4Y2x1ZGVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0V4Y2x1ZGUnICk7CgogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICBxdyhOdW1iZXIgVGl0bGUgS2V5d29yZCBGdWxsdGV4dCBSZXN1bHRGb3JtIFRpbWVTZWFyY2hUeXBlIFZvdGVTZWFyY2ggVm90ZVNlYXJjaFR5cGUKICAgICAgICBWb3RlU2VhcmNoT3B0aW9uIFJhdGVTZWFyY2ggUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaE9wdGlvbgogICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydAogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RhcnQgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkgSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGgKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyCiAgICAgICAgKQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgIyByZW1vdmUgd2hpdGVzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXEEgXHMrIH17fXhtczsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIG5vbiBlbXB0eSBwYXJhbWV0ZXJzIG9uIGEgbG9jYWwgcHJvZmlsZQogICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9IC49ICIkUGFyYW1OYW1lPSRHZXRQYXJhbXskUGFyYW1OYW1lfTsiOwogICAgICAgIH0KCiAgICB9CgogICAgIyBnZXQgYmFjayBsaW5rCiAgICAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaEJhY2tMaW5rJyApIHx8ICcnOwogICAgaWYgKCAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ICkgewogICAgICAgICRHZXRQYXJhbXtTZWFyY2hCYWNrTGlua30gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRHZXRQYXJhbXtTZWFyY2hCYWNrTGlua30gKTsKICAgIH0KCiAgICAjIHNob3cgYmFjayBsaW5rCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gXEBBcnJheTsKCiAgICAgICAgICAgICMgc3RvcmUgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50IChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gLj0gJFBhcmFtTmFtZSAuICc9JyAuICRFbGVtZW50IC4gJzsnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdAogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoCiAgICAgICAgICAgICAgICAjIHByb2ZpbGUKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0gPSAoICVHZXRQYXJhbSwgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZHMgdG8gcHJvZmlsZSB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIGJhY2stbGluawogICAgICAgICAgICAgICAgS0VZSVRFTToKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5SXRlbSAoIHNvcnQga2V5cyAleyREeW5hbWljRmllbGRWYWx1ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBzY2FsYXIgdmFsdWVzIHRvIGFycmF5IHRvIHVzZSBzYW1lIGNvZGUgYmFzZQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmVmICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBlcSAnJwogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0gPSBbICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVlJVEVNIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSApOwoKICAgICAgICAgICAgICAgICAgICAjIGNvbmNhdGVuYXRlIGR5bmFtaWMgZmllbGRzIHZhbHVlcyBpbnRvIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICAgICAgVkFMVUVJVEVNOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVmFsdWVJdGVtICggQHsgJER5bmFtaWNGaWVsZFZhbHVlLT57JEtleUl0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgVkFMVUVJVEVNIGlmICEkVmFsdWVJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9IC49ICIkS2V5SXRlbT0kVmFsdWVJdGVtOyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgaXRlbSBuZWVkIHRvIGdldCBleGNsdWRlZAogICAgZm9yIG15ICRFeGNsdWRlIChARXhjbHVkZXMpIHsKICAgICAgICBpZiAoICRHZXRQYXJhbXskRXhjbHVkZX0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkR2V0UGFyYW17JEV4Y2x1ZGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2b3RlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259IGVxICdWb3RlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHJhdGUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gZXEgJ1JhdGVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBnZXQgdGltZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAkR2V0UGFyYW17J1RpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIHNldCByZXN1bHQgZm9ybSBFTlYKICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CiAgICAgICAgJFNlYXJjaFBhZ2VTaG93biA9ICRTZWFyY2hMaW1pdDsKICAgIH0KCiAgICAjIGNoZWNrIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb24nICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb24ueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgcmVzdWx0IHBhZ2UKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkU2VsZi0+e0VyYXNlVGVtcGxhdGV9ICkgewoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBGQVEgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXk7CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiAlRHluYW1pY0ZpZWxkVmFsdWVzIHRvIGRpc2NhcmQgdGhvc2Ugd2hlcmUgdGhlCiAgICAgICAgICAgICAgICAjIHZhbHVlIHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGdldAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpOwoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB2YWx1ZSB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlYXJjaFBhcmFtZXRlci0+e0Rpc3BsYXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgICAgIG15ICRGQVFPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwZXJmb3JtIEZBUSBzZWFyY2gKICAgICAgICBteSBAVmlld2FibGVGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICApOwoKICAgICAgICAjIGdldCBtdWx0aS1sYW5ndWFnZSBvcHRpb24KICAgICAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkVGltZU9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICAjIGdldCB0aGUgRkFRIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgICAgICBteSBAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgICAgICAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENTVkR5bmFtaWNGaWVsZCA9IFxAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoQFZpZXdhYmxlRkFRSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5mbyBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwogICAgICAgICAgICAgICAgJENTVkluZm97Q2hhbmdlZH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAVG1wQ1NWSGVhZCA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CgogICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0NoYW5nZWQnOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdDaGFuZ2VkJzsKCiAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENTVkluZm97JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gRkFRIGl0ZW0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnQ2hhbmdlZCc7CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnQ2hhbmdlZCc7CgogICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDU1YgcmVzdWx0cwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIGhlYWRlcnMKICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIEZBUU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBGQVFIb29rIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFzc2VtYmxlIENTViBkYXRhCiAgICAgICAgICAgIG15ICRDU1YgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q1NWJyktPkFycmF5MkNTVigKICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRTZWxmLT57VXNlckNTVlNlcGFyYXRvcn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldHVybiBDU1YgdG8gZG93bmxvYWQKICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CiAgICAgICAgICAgIG15ICggJHMsICRtLCAkaCwgJEQsICRNLCAkWSApID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICRNICk7CiAgICAgICAgICAgICREID0gc3ByaW50ZiggIiUwMmQiLCAkRCApOwogICAgICAgICAgICAkaCA9IHNwcmludGYoICIlMDJkIiwgJGggKTsKICAgICAgICAgICAgJG0gPSBzcHJpbnRmKCAiJTAyZCIsICRtICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJENTVkZpbGUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLmNzdiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewoKICAgICAgICAgICAgIyBnZXQgUERGIG9iamVjdAogICAgICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAgICAgbXkgQFBERkRhdGE7CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBjaGFuZ2UgZGF0ZSB0byBsb25nIGZvcm1hdAogICAgICAgICAgICAgICAgbXkgJENoYW5nZWQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFBERiBSb3dzCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbGFuZ3VhZ2Ugcm93CiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0xhbmd1YWdlfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkRkFRRGF0YXtTdGF0ZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkQ2hhbmdlZDsKICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBERiBPdXRwdXQKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEnKSAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1NlYXJjaCcpOwogICAgICAgICAgICBteSAkUGFnZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSA9ICRMYXlvdXRPYmplY3QtPntUaW1lfTsKCiAgICAgICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIG91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgaWYgKEBQREZEYXRhKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVGl0bGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBjb3JyZWN0IGhlYWRlciBpbmRleAogICAgICAgICAgICAgICAgbXkgJE5leHRIZWFkZXJJbmRleCA9IDM7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJyk7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgICAgICROZXh0SGVhZGVySW5kZXggICAgICAgICAgICAgICA9IDQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyUm93ID0gMTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDb3VudGVyQ29sdW1uID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbnRlbnQgKCBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlskQ291bnRlclJvd10tPlskQ291bnRlckNvbHVtbl0tPntDb250ZW50fSA9ICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRlckNvbHVtbisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ291bnRlclJvdysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBSZXN1bHQhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGFnZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtQYWdlT3JpZW50YXRpb259ID0gJ2xhbmRzY2FwZSc7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Cb3R0b219ICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CgogICAgICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjREREREREJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICMgY3JlYXRlIG5ldyBQREYgZG9jdW1lbnQKICAgICAgICAgICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgICAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0YXJ0IHRhYmxlIG91dHB1dAogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAxJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGl0bGUKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciBteSAkUGFnZUNvdW50ICggMiAuLiAkTWF4UGFnZXMgKSB7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIGFub3RoZXIgcGFnZQogICAgICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkUGFnZUNvdW50LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIHRoZSBQREYgZG9jdW1lbnQKICAgICAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV9zZWFyY2gnOwogICAgICAgICAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMkRhdGUoCiAgICAgICAgICAgICAgICBTeXN0ZW1UaW1lID0+ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lKCksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgICAgICAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICAgICAgICAgJGggPSBzcHJpbnRmKCAiJTAyZCIsICRoICk7CiAgICAgICAgICAgICRtID0gc3ByaW50ZiggIiUwMmQiLCAkbSApOwogICAgICAgICAgICBteSAkUERGU3RyaW5nID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnBkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgKTsKCiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVGQVFJRHMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntQcm9maWxlfQogICAgICAgICAgICAgICAgLiAiU29ydEJ5PSRTb3J0Qnk7T3JkZXI9JE9yZGVyQnk7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKCiAgICAgICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6UHVibGljRkFRT3ZlcnZpZXciKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgZm9yIG92ZXJ2aWV3IGRpc3BsYXkKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3RHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRPdmVydmlld0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkT3ZlcnZpZXdEeW5hbWljRmllbGQgPSBcQE92ZXJ2aWV3Q3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcyB0YWJsZSBoZWFkZXJzCiAgICAgICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTICAgPSAnJzsKICAgICAgICAgICAgICAgICAgICBteSAkT3JkZXIgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkU29ydEJ5CiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0QnkgZXEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57T3JkZXJ9ICYmICggJFNlbGYtPntPcmRlcn0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyID0gJ1VwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXIgICAgICAgICAgICA9PiAkT3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKEBWaWV3YWJsZUZBUUlEcykgewoKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFN0YXJ0SGl0CiAgICAgICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRTZWFyY2hQYWdlU2hvd24gKyAkU3RhcnRIaXQgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEgZGV0YWlscwogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NsZWFuVGl0bGV9ID0gJEZBUU9iamVjdC0+RkFRQXJ0aWNsZVRpdGxlQ2xlYW4oCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgPT4gJENvbmZpZy0+e1RpdGxlU2l6ZX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkRkFRRGF0YXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBzaG93IGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgbG9va3VwIHRhYmxlIGZvciBhdHRyaWJ1dGUgc2V0dGluZ3MKICAgICAgICBteSAlQXR0cmlidXRlTWFwID0gKAogICAgICAgICAgICBOdW1iZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyksCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGl0bGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaXRsZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgS2V5d29yZCA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0tleXdvcmQnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZ1bGx0ZXh0ID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRnVsbHRleHQnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENhdGVnb3J5SURzID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpbWVTZWFyY2hUeXBlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ3JlYXRlIFRpbWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZvdGVTZWFyY2hUeXBlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVm90ZXMnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJhdGVTZWFyY2hUeXBlID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnUmF0ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHByaW50IGVhY2ggYXR0cmlidXRlIGluIHNlYXJjaCByZXN1bHRzIGFyZWEuCiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICVBdHRyaWJ1dGVNYXAgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIGRlZmluZWQgYnkgdGhlIHVzZXIKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlIG5hbWUgYW5kIHRyYW5zbGF0ZSBpdCBpZiBhcHBsaWVzCiAgICAgICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRBdHRyaWJ1dGVNYXB7JEF0dHJpYnV0ZX0tPntOYW1lfTsKICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e1RyYW5zbGF0YWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZU5hbWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVWYWx1ZTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgYW4gYXJyYXkgdG8gcGFyc2UgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFteyRBdHRyaWJ1dGV9IGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2F0ZWdvcnkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdDYXRlZ29yeUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgbG9uZyBuYW1lIGZvciBhbGwgcHVibGljIGNhdGVnb3JpZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENhdGVnb3J5TGlzdCA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGVhY2ggY2F0ZWdvcnkgaWQgdG8gY2F0ZWdvcnkgbG9uZyBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBDYXRlZ29yeU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBDQVRFR09SWUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENhdGVkb3J5SUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENhdGVnb3J5TmFtZXMsICRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIHdpdGggYWxsIHNlbGVjdGVkIGNhdGVnb3J5IG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9IGpvaW4oICIgKyAiLCBAQ2F0ZWdvcnlOYW1lcyApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBMYW5ndWFnZUlEcwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTGFuZ3VhZ2VJRHMnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGVhY2ggbGFuZ3VhZ2UgaWQgdG8gbGFuZ3VhZ2UgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBATGFuZ3VhZ2VOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgTEFOR1VBR0VJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTGFuZ3VhZ2VOYW1lID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQgaWYgISRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBMYW5ndWFnZU5hbWVzLCAkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBsYW5ndWFnZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQExhbmd1YWdlTmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgaXMgYW4gc2NhbGFyIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17JEF0dHJpYnV0ZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ1RpbWVTZWFyY2hUeXBlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3RhcnREYXRlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0b3BEYXRlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BZZWFyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcERheX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnLCAnRGF0ZUZvcm1hdFNob3J0JwogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZSAgICAgID0gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIGJldHdlZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJFN0YXJ0RGF0ZSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ2FuZCcpIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRTdG9wRGF0ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGluZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMYXN0JyAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCB3aXRoaW4gdGhlIGxhc3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCZWZvcmUnID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZSAgICAgID0gJE1hcHBpbmctPnsgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfTsKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnR9IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSAuICcocyknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnVm90ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ICkgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17Vm90ZVNlYXJjaH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1JhdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSApIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFte1JhdGVTZWFyY2h9IC4gJyUnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlID0+ICRBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEF0dHJpYnV0ZVZhbHVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGN5Y2xlIHRocm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkU2VhcmNoRGlzcGxheXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoRGlzcGxheXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoIiwKICAgICAgICAgICAgTGluayA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57UHJvZmlsZX1Tb3J0Qnk9JFNvcnRCeTtPcmRlcj0kT3JkZXJCeTsiLAogICAgICAgICAgICBJRFByZWZpeCA9PiAiUHVibGljRkFRU2VhcmNoIiwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZm9vdGVyIGZpbHRlciAtIHNob3cgb25seSBpZiBtb3JlIHRoZSBvbmUgcGFnZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VhcmNoUGFnZVNob3duICkgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnaW5hdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCBIVE1MIHBhZ2UKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAgICAgI1NldCB0aGUgU29ydEJ5IENsYXNzCiAgICAgICAgbXkgJFNvcnRDbGFzczsKCiAgICAgICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAkU29ydENsYXNzID0gJ1NvcnRBc2NlbmRpbmcnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRPcmRlckJ5IGVxICdVcCcgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydERlc2NlbmRpbmcnOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgICAgIG15ICVDU1NTb3J0OwogICAgICAgIG15ICRDU1NTb3J0QnkgPSAkU29ydEJ5IC4gJ1NvcnQnOwogICAgICAgICRDU1NTb3J0eyRDU1NTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICAgICAgbXkgJU5ld09yZGVyID0gKAogICAgICAgICAgICBEb3duID0+IFRyYW5zbGF0YWJsZSgnVXAnKSwKICAgICAgICAgICAgVXAgICA9PiBUcmFuc2xhdGFibGUoJ0Rvd24nKSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyICAgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGVtcHR5IHNlYXJjaCBzaXRlCiAgICBlbHNlIHsKCiAgICAgICAgIyBjcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RGVmYXVsdHN9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+TWFza0Zvcm0oCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gVHJhbnNsYXRhYmxlKCdOb3JtYWwnKSwKICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBidWlsZCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiB7JVJlc3VsdEZvcm19LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1Jlc3VsdEZvcm0nLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgbGFuZ3VhZ2VzIGxpc3QKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBjYXRlZ29yaWVzIGxpc3QKICAgIG15ICRDYXRlZ29yaWVzID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgIFRyZWVWaWV3ICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFcXVhbHMnKSwKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbicpLAogICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuIGVxdWFscycpLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuJyksCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4gZXF1YWxzJyksCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYXN0ICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgIEJlZm9yZSA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3B9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgb3V0cHV0IER5bmFtaWMgZmllbGRzIGJsb2NrcwogICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfTsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkSFRNTCk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG11bHRpLWxhbmd1YWdlIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlcyBzZWxlY3QKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBiYWNrIGxpbmsKICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1pvb21CYWNrTGluaycgKSB8fCAnJzsKICAgIGlmICggJEdldFBhcmFte1pvb21CYWNrTGlua30gKSB7CiAgICAgICAgJEdldFBhcmFte1pvb21CYWNrTGlua30gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRHZXRQYXJhbXtab29tQmFja0xpbmt9ICk7CiAgICB9CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIGdldCBGQVEgaXRlbSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgfHwgISRJbnRlcmZhY2VTdGF0ZXMtPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJGaWVsZCIgKTsKCiAgICAgICAgIyBuZWVkZWQgcGFyYW1zCiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KCBJdGVtSUQgRmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgRmllbGQgY29udGVudAogICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAlRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIHB1YmxpYyBpbnRlcmZhY2UKICAgICAgICBpZiAoICRJbnRlcmZhY2UtPntOYW1lfSBlcSAncHVibGljJyApIHsKCiAgICAgICAgICAgICMgcmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9CiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tfWd4bXM7CgogICAgICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9ID1+IHN7CiAgICAgICAgICAgICAgICBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgICAgICB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIEhUTUwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gfHwgJEZBUURhdGF7Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJ0dyYXknOwogICAgfQoKICAgICMgc2hvdyBiYWNrIGxpbmsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0JhY2snLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgbXVsdGktbGFuZ3VhZ2Ugb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBzaG93IGxhbmd1YWdlCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2b3RpbmcgZGVmYXVsdCBvcHRpb24KICAgIG15ICRWb3RpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyBzaG93IHZvdGVzCiAgICBpZiAoJFZvdGluZykgewoKICAgICAgICAjIGFsd2F5cyBkaXNwbGF5cyBWb3RlcyByZXN1bHQgZXZlbiBpZiBpdHMgMAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3Vm90ZXMnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgRkFRIHBhdGgKICAgIG15ICRTaG93RkFRUGF0aCA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgUGF0aEZvckl0ZW0gPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCRTaG93RkFRUGF0aCkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoSXRlbUVsZW1lbnQnLAogICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKCiAgICAgICAgIyByZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgJEZBUURhdGF7S2V5d29yZHN9OwogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnS2V5d29yZHMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IHJhdGluZyBzdGFycwogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GQVFSYXRpbmdTdGFyc1Nob3coCiAgICAgICAgICAgIFZvdGVSZXN1bHQgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICAgICAgICAgIFZvdGVzICAgICAgPT4gJEZBUURhdGF7Vm90ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMgaWYgYW55CiAgICBteSBAQXR0YWNobWVudEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBhdHRhY2htZW50cwogICAgaWYgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudEhlYWRlcicsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IEZBUSBDb250ZW50CiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVGQVFEYXRhfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRpY2tldCBvYmplY3QKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDI1MCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGxvZyBhY2Nlc3MgdG8gdGhpcyBGQVEgaXRlbQogICAgJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCAgICA9PiAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApLAogICAgICAgIEludGVyZmFjZSA9PiAkSW50ZXJmYWNlLT57TmFtZX0sCiAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRWm9vbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtcwogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJRCkpCiAgICB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybjsKfQoKc3ViIENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICApOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgRkFRIG9iamVjdAogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntUeXBlfSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FnZW50JywKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gMCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+IDAsCiAgICAgICAgICAgIFNpZGViYXJDbGFzcyA9PiAnTWVkaXVtJywKICAgICAgICB9LAogICAgKTsKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEpvdXJuYWwKICAgIGlmICggISRQYXJhbXtKb3VybmFsfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEpvdXJuYWwhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBqb3VybmFsIGxvY2FsbHkKICAgIG15IEBKb3VybmFsRW50cmllczsKICAgIGlmICggJFBhcmFte0pvdXJuYWx9ICYmIHJlZiAkUGFyYW17Sm91cm5hbH0gZXEgJ0FSUkFZJyApIHsKICAgICAgICBASm91cm5hbEVudHJpZXMgPSBAeyAkUGFyYW17Sm91cm5hbH0gfTsKICAgIH0KCiAgICBteSBAU2hvd0NvbHVtbnM7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHNob3cgSm91cm5hbCBFbnRyaWVzIGFzIHJvd3MKICAgIGlmIChASm91cm5hbEVudHJpZXMpIHsKCiAgICAgICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBjb2x1bW4gaGVhZGVyIGJsb2NrcwogICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICMgY2FsbCBtYWluIGJsb2NrCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdSZWNvcmRGb3JtJyApOwoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgICAgICMgY2FsbCBoZWFkZXIgc3BlY2lmaWMgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgSk9VUk5BTEVOVFJZOgogICAgICAgIGZvciBteSAkSm91cm5hbEVudHJ5IChASm91cm5hbEVudHJpZXMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBmb3IgY29ycnVwdGlvbiBjaGVjawogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRKb3VybmFsRW50cnktPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEpvdXJuYWxFbnRyeS0+e0NsZWFuU3ViamVjdH0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkUGFyYW17VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBKT1VSTkFMRU5UUlkgaWYgISVGQVE7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2V0IGFuIE5vIEZBUSBKb3VybmFsIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBVc2VySUQgcGFyYW0KICAgICRTZWxmLT57VXNlcklEfSA9ICRQYXJhbXtVc2VySUR9IHx8IGRpZSAiR290IG5vIFVzZXJJRCEiOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RkFRSXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEZBUUl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gPSAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn07CiAgICBpZiAoICRBY3Rpb24gZXEgJ0FnZW50TGlua09iamVjdCcgKSB7CgogICAgICAgICMgVGhlIExpbmstbGluayBpcyBhIHNwZWNpYWwgY2FzZSwgYXMgaXQgaXMgbm90IHNwZWNpZmljIHRvIEZBUS4KICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBoYXJkY29yZSB0aGF0IEFnZW50TGlua09iamVjdCBpcyB0cmVhdGVkIGxpa2UgQWdlbnRGQVFFZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudEZBUUVkaXQnOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgYWN0aW9uCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufTsKCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnLT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnLT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRMYXlvdXRPYmplY3QtPnsiVXNlcklzR3JvdXBSb1skUm9Hcm91cF0ifTsKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICRMYXlvdXRPYmplY3QtPnsiVXNlcklzR3JvdXBSb1skUm9Hcm91cF0ifSBuZSAnWWVzJzsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBST0dST1VQOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZWFkIHdyaXRlIGdyb3VwcwogICAgICAgIFJXR1JPVVA6CiAgICAgICAgZm9yIG15ICRSd0dyb3VwICggQHskR3JvdXBzUnd9ICkgewoKICAgICAgICAgICAgbmV4dCBSV0dST1VQIGlmICEkTGF5b3V0T2JqZWN0LT57IlVzZXJJc0dyb3VwWyRSd0dyb3VwXSJ9OwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJExheW91dE9iamVjdC0+eyJVc2VySXNHcm91cFskUndHcm91cF0ifSBuZSAnWWVzJzsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtGQVFJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewoKICAgICAgICAjIG91dHB1dCBjb25maXJtYXRpb24gZGlhbG9nCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Nob3dDb25maXJtYXRpb25EaWFsb2cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtGQVFJdGVtfSB9LAogICAgICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBuZWVkIEZBUUlEcwogICAgaWYgKCAhJFBhcmFte0ZBUUlEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBGQVFJRHMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIHRoZSBGQVFJRHMKICAgIG15IEBJRHM7CiAgICBpZiAoICRQYXJhbXtGQVFJRHN9ICYmIHJlZiAkUGFyYW17RkFRSURzfSBlcSAnQVJSQVknICkgewogICAgICAgIEBJRHMgPSBAeyAkUGFyYW17RkFRSURzfSB9OwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjpPdmVydmlld1NtYWxsIiktPntEeW5hbWljRmllbGR9OwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0ZBUSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICREeW5hbWljRmllbGRGaWx0ZXIgfHwge30sCiAgICApOwoKICAgIG15IEBTaG93Q29sdW1uczsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmIChASURzKSB7CgogICAgICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBidWlsZCBjb2x1bW4gaGVhZGVyIGJsb2NrcwogICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICMgY2FsbCBtYWluIGJsb2NrCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdSZWNvcmRGb3JtJyApOwoKICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRNdWx0aUxhbmd1YWdlICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbmVlZGVkIHZhcmlhYmxlcwogICAgICAgICAgICAgICAgbXkgJENTUyA9ICdPdmVydmlld0hlYWRlcic7CiAgICAgICAgICAgICAgICBteSAkT3JkZXJCeTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBJRCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0gPSAkUGFyYW17U29ydEJ5fSBlcSAnUHJpb3JpdHlJRCcKICAgICAgICAgICAgICAgICAgICAgICAgPyAnUHJpb3JpdHknCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ0NhdGVnb3J5SUQnID8gJ0NhdGVnb3J5JwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdMYW5ndWFnZUlEJyA/ICdMYW5ndWFnZScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnU3RhdGVJRCcgICAgPyAnU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ0ZBUUlEJyAgICAgID8gJ051bWJlcicKICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29ycmVjdCBTZXQgQ1NTIGNsYXNzIGFuZCBvcmRlciBieSBsaW5rCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnl9ICYmICggJFBhcmFte09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbXkgJE9yZGVyQnk7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSAmJiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRIZWFkZXJTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdIZWFkZXJTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZEhlYWRlck5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnSGVhZGVyTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHRvIHN0b3JlIGFsbCBkYXRhCiAgICAgICAgICAgICAgICBteSAlRGF0YTsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEZBUXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRGQVF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRQYXJhbXtUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElEIGlmICElRkFROwoKICAgICAgICAgICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgICAgICAgICAlRGF0YSA9ICggJURhdGEsICVGQVEgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHJlY29yZCBibG9jawogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHNob3cgbGFuZ3VhZ2UgY29sdW1uIGlmIEZBUSBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAoICRDb2x1bW4gZXEgJ0xhbmd1YWdlJyAmJiAhJE11bHRpTGFuZ3VhZ2UgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgZGlzcGxheSBjb2x1bW5zIGFzIGxpbmtzIGluIHRoZSBjdXN0b21lciBmcm9udGVuZAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkUGFyYW17RnJvbnRlbmR9IGVxICdDdXN0b21lcic7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICRTZWxmLT57Vmlld1R5cGV9LAogICAgICAgICAgICBDb2x1bW5Db3VudCA9PiBzY2FsYXIgQFNob3dDb2x1bW5zLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpBZ2VudEZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0TmFtZScpIC4gJyAoJyAuICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGwtdGV4dAogICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnJXMgKEZBUUZ1bGx0ZXh0KScsICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpDdXN0b21lckZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIEN1c3RvbWVyICglcyknLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSwKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICdBY3Rpb249JwogICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsLXRleHQKICAgICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbXkgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIFB1YmxpYyAoJXMpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgLiAnQWN0aW9uPScKICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGZvciBGQVEgZnVsbC10ZXh0CiAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgJyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgLiAnQWN0aW9uPScKICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259CiAgICAgICAgICAgICAgICAuICc7U3ViYWN0aW9uPU9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6RkFRIC0gYWxsIEZBUS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBGQVEtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIEdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoKQpSZXR1cm5zIGEgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBGQVEgcmF0ZQoKICAgIG15ICRWb3RpbmdSZXN1bHRDb2xvciA9ICRMYXlvdXRPYmplY3QtPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAnMjAnLAogICAgKTsKClJldHVybnM6CgogICAgJFZvdGluZ1Jlc3VsdENvbG9yID0gJ3JlZCcgICAgICAgICAgIyBvciAnb3JhbmdlJyBvciAnZ3JlZW4nCgo9Y3V0CgpzdWIgR2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1JhdGV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgcmF0ZSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJENzc1RtcCAgICAgICAgICAgICA9ICcnOwogICAgbXkgJFZvdGluZ1Jlc3VsdENvbG9ycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdENvbG9ycycpOwoKICAgIGZvciBteSAkS2V5ICggc29ydCB7ICRiIDw9PiAkYSB9IGtleXMgJXskVm90aW5nUmVzdWx0Q29sb3JzfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtSYXRlfSA8PSAkS2V5ICkgewogICAgICAgICAgICAkQ3NzVG1wID0gJFZvdGluZ1Jlc3VsdENvbG9ycy0+eyRLZXl9OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkQ3NzVG1wOwp9Cgo9aXRlbSBGQVFMaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBGQVEgaXRlbXMgYXMgc29ydGFibGUgbGlzdCB3aXRoIHBhZ2luYXRpb24uCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvVGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgRkFRSURzICAgICA9PiAkRkFRSURzUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgRkFRSURzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkRkFRSURzUmVmIH0sICAgICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgPT4gJ092ZXJ2aWV3OiBGQVEnLAogICAgICAgIFRpdGxlVmFsdWUgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lcnxQdWJsaWMpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIEZBUUxpc3RTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0YWtlIG9iamVjdCByZWYgdG8gbG9jYWwsIHJlbW92ZSBpdCBmcm9tICVQYXJhbSAocHJldmVudCBtZW1vcnkgbGVhaykKICAgIG15ICRFbnYgPSAkUGFyYW17RW52fTsKICAgIGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JykgfHwgJyc7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiIScsICRWaWV3ICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdmlnYXRpb24gYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJGQVFPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBGQVEgYXJ0aWNsZXMgb24gYSBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICk7CgogICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciBjb250ZW50CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgbXkgJExpbmtCYWNrSUQgPSAnRkFRU2VhcmNoJzsKICAgIGlmICggJFBhcmFte05hdn0gJiYgJFBhcmFte05hdn0gZXEgJ05vbmUnICkgewogICAgICAgICRMaW5rQmFja0lEIC49ICdTbWFsbCc7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtCYWNrSUQgPT4gJExpbmtCYWNrSUQsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmaWx0ZXJzCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgIyBnZXQgZ2l2ZW4gZmlsdGVycwogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBmaWx0ZXIgY29udGVudAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGxvb3Agb3ZlciBmaWx0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKCiAgICAgICAgICAgICMgaW5jcmVtZW50IGZpbHRlciBjb3VudCBhbmQgYnVpbGQgZmlsdGVyIGl0ZW0KICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZpbHRlciBpcyBzZWxlY3RlZAogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciBjb25maWd1cmVkIGJhY2stZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciB2aWV3IG1vZGUKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3VycmVudCB2aWV3IGlzIGNvbmZpZ3VyZWQgaW4gYmFja2VuZAogICAgICAgIGlmICggJFZpZXcgZXEgJEJhY2tlbmQgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHBhZ2UgbmF2aWdhdGlvbiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBkb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksCiAgICAgICAgIyBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBIVE1MIGNvbnRlbnQKICAgIG15ICRPdXRwdXROYXZCYXIgPSAkU2VsZi0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICcnOwogICAgaWYgKCAhJFBhcmFte091dHB1dH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICBPdXRwdXQgPT4gXCRPdXRwdXROYXZCYXIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXRSYXcgPSAkT3V0cHV0TmF2QmFyOwogICAgfQoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBiYWNrZW5kIG9iamVjdAogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldyggJXskRW52fSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcnVuIG1vZHVsZQogICAgbXkgJE91dHB1dCA9ICRPYmplY3QtPlJ1bigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgRnJvbnRlbmQgID0+ICRQYXJhbXtGcm9udGVuZH0gfHwgJ0FnZW50JywKICAgICAgICBOYXYgICAgICAgPT4gJFBhcmFte05hdn0gfHwgJycsCiAgICAgICAgVGl0bGVTaXplID0+ICRQYXJhbXtGQVFUaXRsZVNpemV9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CiAgICB9CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2aWdhdGlvbiBiYXIKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9Cgo9aXRlbSBGQVFDb250ZW50U2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgRFRMIGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBmaWVsZHMgZm9yIHRoZSBzdXBwbGllZCBGQVEgaXRlbSBJRC4KVGhlIGZpZWxkcyBkaXNwbGF5ZWQgYXJlIGFsc28gcmVzdHJpY3RlZCBieSB0aGUgcGVybWlzc2lvbnMgcmVwcmVzZW50ZWQgYnkgdGhlIHN1cHBsaWVkIGludGVyZmFjZQoKSWYgZXhpc3QgUmV0dXJuQ29udGVudCBwYXJhbWV0ZXIgaXQgcmV0dXJucyB0aGUgRkFRIGl0ZW1zIGZpZWxkcyBvbiBhIEhUTUwgZm9ybWF0ZWQgc3RyaW5nCgogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gJXsgJEZBUURhdGEgfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LCAgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIGNvcmUgbW9kdWxlIGludGVyYWN0aW9uCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+ICV7ICRGQVFEYXRhIH0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBSZXR1cm5Db250ZW50ICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRQ29udGVudFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgRkFRRGF0YSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3siRmllbGQkTnVtYmVyIn0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGdWxsQ29udGVudDsKCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICRDYXB0aW9uID0gJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfTsKICAgICAgICBteSAkQ29udGVudCA9ICRQYXJhbXtGQVFEYXRhfS0+eyRGaWVsZH0gfHwgJyc7CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBIVE1MIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoZSBmaWVsZAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbXtGQVFEYXRhfS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgQ2FwdGlvbiAgID0+ICRDYXB0aW9uLAogICAgICAgICAgICAgICAgU3RhdGVOYW1lID0+ICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICYmICRTZWxmLT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRIVE1MJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RkFRRGF0YX0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY29udmVydCBmaWVsZHMgQVNDSUkgaWYgbmVlZGVkCiAgICAgICAgICAgIGlmICggJFBhcmFte0ZBUURhdGF9LT57Q29udGVudFR5cGV9IG5lICd0ZXh0L3BsYWluJyApIHsKICAgICAgICAgICAgICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkQ29udGVudCwKICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRQbGFpbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb250ZW50LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgdGhlIGZpZWxkIHRvIHJldHVybiBhbGwgRkFRIEJvZHkKICAgICAgICBpZiAoICRQYXJhbXtSZXR1cm5Db250ZW50fSAmJiAkQ29udGVudCApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0eXBlCiAgICAgICAgICAgIG15ICRJbnRlcm5hbFN0YXRlVHlwZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAnaW50ZXJuYWwnLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBjdXJyZW50IGZpZWxkIGlzIGludGVybmFsCiAgICAgICAgICAgIG15ICRJc0ludGVybmFsOwogICAgICAgICAgICBpZiAoICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gPT0gJEludGVybmFsU3RhdGVUeXBlLT57U3RhdGVJRH0gKSB7CiAgICAgICAgICAgICAgICAkSXNJbnRlcm5hbCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UKICAgICAgICAgICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBzaG91bGQgYmUgcGFydCBvZiB0aGUgcmV0dXJuaW5nIHN0cmluZwogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5jbHVkZUludGVybmFsfSB8fCAhJElzSW50ZXJuYWwgKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiBmaWVsZCBuYW1lIHNob3VsZCBiZSByZXR1cm5lZAogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dGaWVsZE5hbWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ2FwdGlvbikgLiAnIDxici8+ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRnVsbENvbnRlbnQgLj0gJENvbnRlbnQgLiAnIDxici8+ICc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gYWxsIHRoZSAocGVybWl0dGVkKSBGQVEgYm9keQogICAgaWYgKCAkUGFyYW17UmV0dXJuQ29udGVudH0gKSB7CiAgICAgICAgaWYgKCRGdWxsQ29udGVudCkgewogICAgICAgICAgICByZXR1cm4gJEZ1bGxDb250ZW50OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVGhpcyBhcnRpY2xlIGlzIGVtcHR5IScpOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFQYXRoU2hvdygpCgppZiBpdHMgYWxsb3dlZCBieSB0aGUgY29uZmlndXJhdGlvbiwgb3V0cHV0cyB0aGUgbmVjZXNzYXJ5IERUTCBibG9ja3MgdG8gZGlzcGxheSB0aGUgRkFRIGl0ZW0gcGF0aCwKYW5kIHJldHVybnMgdGhlIHZhbHVlIDEuCgogICAgbXkgJFNob3dQYXRoT2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgICA9PiAkRkFRT2JqZWN0LCAgICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBDYXRlZ29yeUlEICA9PiA1LAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgUGF0aEZvckl0ZW0gPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCAoZGVmYXVsdCAwKQogICAgICAgIE5hdiAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRUGF0aFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtQYXRoRm9ySXRlbX0gfHw9IDA7CgogICAgIyBjaGVjayBwYXJhbWV0ZXJzCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2F0ZWdvcnlJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JzsKICAgIGlmICggJFBhcmFte0NhdGVnb3J5SUR9IGVxICcwJyApIHsKICAgICAgICAkQmxvY2sgPSAnRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayc7CiAgICB9CgogICAgIyBvdXRwdXQgY2F0ZWdvcnkgcm9vdAogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJEJsb2NrLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lJyksCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMCwKICAgICAgICAgICAgTmF2ICAgICAgICA9PiAkUGFyYW17TmF2fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBTaG93IEZBUSBQYXRoIHNldHRpbmcKICAgIG15ICRTaG93UGF0aCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2hvdycpOwoKICAgICMgZG8gbm90IGRpc3BsYXkgdGhlIHBhdGggaWYgc2V0dGluZyBpcyBvZmYKICAgIHJldHVybiBpZiAhJFNob3dQYXRoOwoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgIyBnZXQgY2F0ZWdvcnkgbGlzdCB0byBjb25zdHJ1Y3QgdGhlIHBhdGgKICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBzdWJjYXRlZ29yaWVzCiAgICBmb3IgbXkgJENhdGVnb3J5RGF0YSAoIEB7JENhdGVnb3J5TGlzdH0gKSB7CgogICAgICAgICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JzsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDYXRlZ29yeURhdGEtPntDYXRlZ29yeUlEfSA9PSAkQ2F0ZWdvcnlMaXN0LT5bLTFdLT57Q2F0ZWdvcnlJRH0KICAgICAgICAgICAgJiYgISRQYXJhbXtQYXRoRm9ySXRlbX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEJsb2NrID0gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsnOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRCbG9jaywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAleyRDYXRlZ29yeURhdGF9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRUmF0aW5nU3RhcnNTaG93KCkKCk91dHB1dHMgdGhlIG5lY2Vzc2FyeSBEVEwgYmxvY2tzIHRvIHJlcHJlc2VudCB0aGUgRkFRIGl0ZW0gcmF0aW5nCmFzICJTdGFycyIgaW4gdGhlIHNjYWxlIGZyb20gMSB0byA1LgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhLT57Vm90ZVJlc3VsdH0sCiAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YSAtPntWb3Rlc30sCiAgICApOwoKPWN1dAoKc3ViIEZBUVJhdGluZ1N0YXJzU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFZvdGVSZXN1bHQgVm90ZXMpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBzdGFycyBieSBtdWx0aXBseSBieSA1IGFuZCBkaXZpZGUgYnkgMTAwCiAgICAjIDEwMCBiZWNhdXNlIFZvdGUgcmVzdWx0IGlzIGEgJQogICAgIyA1IGJlY2F1c2Ugd2UgaGF2ZSBvbmx5IDUgc3RhcnMKICAgIG15ICRTdGFyQ291bnRlciA9IGludCggJFBhcmFte1ZvdGVSZXN1bHR9ICogMC4wNSApOwogICAgaWYgKCAkU3RhckNvdW50ZXIgPCA1ICkgewoKICAgICAgICAjIGFkZCAxIGJlY2F1c2UgbG93ZXN0IHZhbHVlIHNob3VsZCBiZSAxCiAgICAgICAgJFN0YXJDb3VudGVyKys7CiAgICB9CgogICAgIyB0aGUgbnVtYmVyIG9mIHN0YXJzIGNhbid0IGJlIGdyYXRlciB0aGF0IDUKICAgIGVsc2lmICggJFN0YXJDb3VudGVyID4gNSApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSA1OwogICAgfQoKICAgICMgb3V0cHV0IHJhdGluZyBibG9jawogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1ZpZXdSYXRpbmcnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBkbyBub3Qgb3V0cHV0IGFueSBzdGFyIGlmIHRoaXMgRkFRIGhhcyBiZWVuIG5vdCB2b3RlZAogICAgaWYgKCAkUGFyYW17Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkU3RhckNvdW50ZXIgPSAwOwogICAgfQoKICAgICMgc2hvdyBzdGFycyBvbmx5IGlmIHRoZSBGQVEgaXRlbSBoYXMgYmVlbiB2b3RlZCBhdCBsZWFzdCBvbmNlIGV2ZW4gaWYgdGhlICRWb3RlUmVzdWx0IGlzIDAKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBzdGFycwogICAgICAgIGZvciAoIDEgLi4gJFN0YXJDb3VudGVyICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSYXRlU3RhcnMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBzdGFycyB0ZXh0CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUmF0ZVN0YXJzQ291bnQnLAogICAgICAgIERhdGEgPT4geyBTdGFycyA9PiAkU3RhckNvdW50ZXIgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVNob3dMYXRlc3ROZXdzQm94KCkKClNob3dzIGFuIGluZm8gYm94IHdpdGggdGhlIGxhc3QgdXBkYXRlZCBvciBsYXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzLgpEZXBlbmRpbmcgb24gdGhlIHVzZXMgaW50ZXJmYWNlIChhZ2VudCwgY3VzdG9tZXIsIHB1YmxpYykgb25seSB0aGUgYXBwcm9wcmlhdGUKYXJ0aWNsZXMgYXJlIHNob3duIGhlcmUuCgogICAgJExheW91dE9iamVjdC0+RkFRU2hvd0xhdGVzdE5ld3NCb3goCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0xhc3RDcmVhdGUnLCAgICAgICAgICAgICAgICMgKExhc3RDcmVhdGUgfCBMYXN0Q2hhbmdlKQogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywgICAgICAgICAgICAgICAgICAgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+IDUsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFTaG93TGF0ZXN0TmV3c0JveCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBUeXBlIE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBDYXRlZ29yeUlEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayB0eXBlCiAgICBpZiAoICRQYXJhbXtUeXBlfSAhfiBteyBMYXN0Q3JlYXRlIHwgTGFzdENoYW5nZSB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2UhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgb3JkZXIgYnkgc2VhcmNoIHBhcmFtZXRlciBhbmQgaGVhZGVyIGJhc2VkIG9uIHR5cGUKICAgIG15ICRPcmRlckJ5OwogICAgbXkgJEhlYWRlcjsKICAgIG15ICRSU1NUaXRsZTsKICAgIGlmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q3JlYXRlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ3JlYXRlZCc7CiAgICAgICAgJEhlYWRlciAgID0gVHJhbnNsYXRhYmxlKCdMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnKTsKICAgICAgICAkUlNTVGl0bGUgPSBUcmFuc2xhdGFibGUoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSBlcSAnTGFzdENoYW5nZScgKSB7CiAgICAgICAgJE9yZGVyQnkgID0gJ0NoYW5nZWQnOwogICAgICAgICRIZWFkZXIgICA9IFRyYW5zbGF0YWJsZSgnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJyk7CiAgICAgICAgJFJTU1RpdGxlID0gVHJhbnNsYXRhYmxlKCdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJyk7CiAgICB9CgogICAgbXkgJFJlc3VsdCA9IC0xOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkL3VwZGF0ZWQgYXJ0aWNsZXMKICAgIG15ICRTaG93ID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkV4cGxvcmVyOjokUGFyYW17VHlwZX06OlNob3ciKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICAjIHN0b3JlIEZBUSBvYmplY3QgbG9jYWxseQogICAgICAgIG15ICRGQVFPYmplY3QgPSAkUGFyYW17RkFRT2JqZWN0fTsKCiAgICAgICAgIyB0byBzdG9yZSBzZWFyY2ggcGFyYW0gZm9yIGNhdGVnb3JpZXMKICAgICAgICBteSAlQ2F0ZWdvcnlTZWFyY2hQYXJhbTsKCiAgICAgICAgIyBpZiBzdWJjYXRlZ29yaWVzIHNob3VsZCBhbHNvIGJlIHNob3duCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGEgY2F0ZWdvcnkgaXMgZ2l2ZW4gYW5kIHN1YmNhdGVnb3JpZXMgc2hvdWxkIG5vdCBiZSBzaG93bgogICAgICAgIGVsc2lmICggJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgIyBzZWFyY2ggb25seSBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0gXTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIHRoZSBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpFeHBsb3Jlcjo6JFBhcmFte1R5cGV9OjpMaW1pdCIpIHx8IDUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVDYXRlZ29yeVNlYXJjaFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNob3cKICAgICAgICBpZiAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICRIZWFkZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBSU1MgRmVlZCBpY29uCiAgICAgICAgICAgIGlmICggJFBhcmFte01vZGV9IGVxICdQdWJsaWMnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRSU1NUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBhcnRpY2xlIHJvdwogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9Cgo9aXRlbSBGQVFTaG93VG9wMTAoKQoKU2hvd3MgYW4gaW5mbyBib3ggd2l0aCB0aGUgVG9wIDEwIEZBUSBhcnRpY2xlcy4KRGVwZW5kaW5nIG9uIHRoZSB1c2VzIGludGVyZmFjZSAoYWdlbnQsIGN1c3RvbWVyLCBwdWJsaWMpIG9ubHkgdGhlIGFwcHJvcHJpYXRlCmFydGljbGVzIGFyZSBzaG93biBoZXJlLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywgICAgICAgICAgICAgICAgICAgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+IDUsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRTZWxmLT57SW50ZXJmYWNlfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICAgICA9PiAnbm9uZScsICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFTaG93VG9wMTAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgTW9kZSBJbnRlcmZhY2UgSW50ZXJmYWNlU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG1vZGUKICAgIGlmICggJFBhcmFte01vZGV9ICF+IG17IEFnZW50IHwgQ3VzdG9tZXIgfCBQdWJsaWMgfXhtcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01vZGUgbXVzdCBiZSBlaXRoZXIgQWdlbnQsIEN1c3RvbWVyIG9yIFB1YmxpYyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFJlc3VsdCA9IC0xOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkL3VwZGF0ZWQgYXJ0aWNsZXMKICAgIG15ICRTaG93ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvdycpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gKSB7CgogICAgICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgICAgICAjIHRvIHN0b3JlIHNlYXJjaCBwYXJhbSBmb3IgY2F0ZWdvcmllcwogICAgICAgIG15ICVDYXRlZ29yeVNlYXJjaFBhcmFtOwoKICAgICAgICAjIGlmIHN1YmNhdGVnb3JpZXMgc2hvdWxkIGFsc28gYmUgc2hvd24KICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3dTdWJDYXRlZ29yeUl0ZW1zJykgKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBjYXRlZ29yeQogICAgICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHNSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJFBhcmFte0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0gfHwgJycsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNlYXJjaCBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkgYW5kIGFkZCB0aGUgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0sIEB7JFN1YkNhdGVnb3J5SURzUmVmfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIHRvcCAxMCBhcnRpY2xlcyBmb3IgY2F0ZWdvcmllcyB3aXRoIGF0IGxlYXN0IHJvIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSwKICAgICAgICAgICAgTGltaXQgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0JykgfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgJUNhdGVnb3J5U2VhcmNoUGFyYW0sCiAgICAgICAgKSB8fCBbXTsKCiAgICAgICAgIyB0aGVyZSBpcyBzb21ldGhpbmcgdG8gc2hvdwogICAgICAgIGlmICggJFRvcDEwSXRlbUlEc1JlZiAmJiByZWYgJFRvcDEwSXRlbUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgICAgICAkUmVzdWx0ID0gMTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgaW5mbyBib3gKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ1RvcCAxMCBGQVEgYXJ0aWNsZXMnKSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgdGhlIFJTUyBGZWVkIGljb24KICAgICAgICAgICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ1B1YmxpYycgKSB7CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICA9PiAnVG9wMTAnLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBBcnRpY2xlcyAoVG9wIDEwKScpLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkTnVtYmVyOwogICAgICAgICAgICBmb3IgbXkgJFRvcDEwSXRlbSAoIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgICAgICAgICAgIyBpbmNyZWFzZSB0aGUgbnVtYmVyCiAgICAgICAgICAgICAgICAkTnVtYmVyKys7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJFRvcDEwSXRlbS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgYXJ0aWNsZSByb3cKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmF2ID0+ICRQYXJhbXtOYXZ9LAogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIFRvcC0xMCBwb3NpdGlvbiBudW1iZXIKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJE51bWJlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKPWl0ZW0gRkFRU2hvd1F1aWNrU2VhcmNoKCkKClNob3dzIGFuIGluZm8gYm94IHdpdGggdGhlIFF1aWNrIFNlYXJjaC4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgU2VhcmNoQmFja0xpbmsgID0+ICRCYXNlNjRFbmNvZGVkVXJsLCAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dRdWlja1NlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEFnZW50U21hbGwgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgYWN0aW9uIG1vZHVsZQogICAgbXkgJEFjdGlvbjsKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdBZ2VudFNtYWxsJyApIHsKICAgICAgICAkQWN0aW9uID0gJ0FnZW50RkFRU2VhcmNoU21hbGwnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtNb2RlfSAuICdGQVFTZWFyY2gnOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzaG93IHF1aWNrIHNlYXJjaAogICAgbXkgJFNob3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlF1aWNrU2VhcmNoOjpTaG93Jyk7CiAgICBpZiAoICRTaG93LT57ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gfSB8fCAkUGFyYW17TW9kZX0gZXEgJ0FnZW50U21hbGwnICkgewoKICAgICAgICAjIGNhbGwgUXVpY2tTZWFyY2ggYmxvY2sKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1aWNrU2VhcmNoJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkQWN0aW9uLAogICAgICAgICAgICAgICAgTmF2ICAgICAgICAgICAgPT4gJFBhcmFte05hdn0gfHwgJycsCiAgICAgICAgICAgICAgICBTZWFyY2hCYWNrTGluayA9PiAkUGFyYW17U2VhcmNoQmFja0xpbmt9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBsaW5rIG9iamVjdCAoRkFRKQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpGQVEtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIGZvciBteSAkTmVlZGVkIChxdyhVc2VyTGFuZ3VhZ2UgVXNlcklEKSkgewogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH0gfHwgZGllICJHb3Qgbm8gJE5lZWRlZCEiOwogICAgfQoKICAgICMgVE9ETzogY2hlY2sgaWYgdGhlIG5ldyBpbnN0YW5jZSBpcyBzdGlsbCBuZWVkZWQgd2l0aCB0aGUgT00hCgogICAgIyBXZSBuZWVkIG91ciBvd24gTGF5b3V0T2JqZWN0IGluc3RhbmNlIHRvIGF2b2lkIGJsb2NrZGF0YSBjb2xsaXNpb25zCiAgICAjICAgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZXMKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnRkFRJywKICAgICAgICBSZWFsbmFtZSAgID0+ICdGQVEnLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnRkFRJ10sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gVGFibGVDcmVhdGVDb21wbGV4KCkKCnJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBibG9jayBkYXRhCgogICAgbXkgQEJsb2NrRGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZUNvbXBsZXgoCiAgICAgICAgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSA9PiAkT2JqZWN0TGlua0xpc3RSZWYsCiAgICApOwoKYSByZXN1bHQgY291bGQgYmUKCiAgICAlQmxvY2tEYXRhID0gKAogICAgICAgIHsKICAgICAgICAgICAgT2JqZWN0TmFtZSAgPT4gJ0ZBUUlEJywKICAgICAgICAgICAgT2JqZWN0SUQgICAgPT4gJzE0Nzg1JywKCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnRkFRJywKICAgICAgICAgICAgQmxvY2tuYW1lID0+ICdGQVEnLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0ZBUSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUaXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1N0YXRlJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDExMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJdGVtTGlzdCA9PiBbCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyMzEyMzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENzcyAgICAgPT4gJ3N0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCInLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSB0aXRsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RpbWVMb25nJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMS0wMSAxMjoxMjowMCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzQzNDIzNCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlIG9mIEZBUSAyJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlQ29tcGxleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgbGlzdC4KICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgZm9yIG15ICRGQVFJRCAoIHNvcnQga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JEZBUUlEfS0+e0RhdGF9ID0gJERpcmVjdGlvbkxpc3QtPnskRkFRSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb21wbGV4VGFibGVEYXRhID0gJENvbmZpZ09iamVjdC0+R2V0KCJMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUiKTsKICAgIG15ICREZWZhdWx0Q29sdW1uczsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb21wbGV4VGFibGVEYXRhKQogICAgICAgICYmICRDb21wbGV4VGFibGVEYXRhLT57RkFRfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ29tcGxleFRhYmxlRGF0YS0+e0ZBUX0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRGVmYXVsdENvbHVtbnMgPSAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJEZWZhdWx0Q29sdW1ucyJ9OwogICAgfQoKICAgIG15IEBUaW1lTG9uZ1R5cGVzID0gKAogICAgICAgICJDcmVhdGVkIiwKICAgICAgICAiQ2hhbmdlZCIsCiAgICApOwoKICAgICMgRGVmaW5lIHRoZSBibG9jayBkYXRhLgogICAgbXkgJEZBUUhvb2sgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwoKICAgIG15IEBIZWFkbGluZSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUUhvb2ssCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgTG9hZCB1c2VyIHByZWZlcmVuY2VzLgogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISREZWZhdWx0Q29sdW1ucyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJERlZmF1bHRDb2x1bW5zKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01pc3NpbmcgY29uZmlndXJhdGlvbiBmb3IgTGlua09iamVjdDo6Q29tcGxleFRhYmxlIyMjRkFRIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBHZXQgZGVmYXVsdCBjb2x1bW4gcHJpb3JpdHkgZnJvbSBTeXNDb25maWcuCiAgICAjIEVhY2ggY29sdW1uIGluIHRhYmxlIChUaXRsZSwgU3RhdGUsLi4uKSBoYXMgZGVmaW5lZCBQcmlvcml0eSBpbiBTeXNDb25maWcuIFN5c3RlbSB1c2UgdGhpcwogICAgIyAgIHByaW9yaXR5IHRvIHNvcnQgY29sdW1ucywgaWYgdXNlciBkb2Vzbid0IGhhdmUgb3duIHNldHRpbmdzLgogICAgbXkgJVNvcnRPcmRlcjsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJQcmlvcml0eSJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDb21wbGV4VGFibGVEYXRhLT57IkZBUSJ9LT57IlByaW9yaXR5In0gKQogICAgICAgICkKICAgIHsKICAgICAgICAlU29ydE9yZGVyID0gJXsgJENvbXBsZXhUYWJsZURhdGEtPnsiRkFRIn0tPnsiUHJpb3JpdHkifSB9OwogICAgfQoKICAgIG15ICVVc2VyQ29sdW1ucyA9ICV7JERlZmF1bHRDb2x1bW5zfTsKCiAgICBpZiAoICRQcmVmZXJlbmNlc3snTGlua09iamVjdDo6Q29tcGxleFRhYmxlLUZBUSd9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeydMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUtRkFRJ30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29sdW1uc0VuYWJsZWQKICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKQogICAgICAgICAgICAmJiAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0KICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIENsZWFyIHNvcnQgb3JkZXIuCiAgICAgICAgICAgICVTb3J0T3JkZXIgPSAoKTsKCiAgICAgICAgICAgIERFRkFVTFRDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoIHNvcnQga2V5cyAlVXNlckNvbHVtbnMgKSB7CiAgICAgICAgICAgICAgICBteSAkSW5kZXggPSAwOwoKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlclNldHRpbmcgKCBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q29sdW1uIGVxICRVc2VyU2V0dGluZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0T3JkZXJ7JERlZmF1bHRDb2x1bW59ICAgPSAkSW5kZXg7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFRDT0xVTU47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm90IGZvdW5kLCBtZWFucyB1c2VyIGNob3NlIHRvIGhpZGUgdGhpcyBpdGVtLgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JERlZmF1bHRDb2x1bW59ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gPSAwOyAgICAjIFNldCAwLCBpdCBzeXN0ZW0gd2lsbCBoaWRlIHRoaXMgaXRlbSBhbnl3YXlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBVc2VyIGhhcyBubyBvd24gc2V0dGluZ3MuCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJVVzZXJDb2x1bW5zICkgewogICAgICAgICAgICBpZiAoICEkU29ydE9yZGVyeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskQ29sdW1ufSA9IDA7ICAgICAgICAgICAgICAgIyBTZXQgMCwgaXQgc3lzdGVtIHdpbGwgaGlkZSB0aGlzIGl0ZW0gYW55d2F5cwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRGVmaW5lIEhlYWRsaW5lIGNvbHVtbnMuCiAgICBteSBAQWxsQ29sdW1uczsKICAgIENPTFVNTjoKICAgIGZvciBteSAkQ29sdW1uICggc29ydCB7ICRTb3J0T3JkZXJ7JGF9IDw9PiAkU29ydE9yZGVyeyRifSB9IGtleXMgJVVzZXJDb2x1bW5zICkgewoKICAgICAgICBteSAkQ29sdW1uVHJhbnNsYXRlID0gJENvbHVtbjsKICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0NhdGVnb3J5TmFtZScgKSB7CiAgICAgICAgICAgICRDb2x1bW5UcmFuc2xhdGUgPSBUcmFuc2xhdGFibGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ29udGVudFR5cGUnICkgewogICAgICAgICAgICAkQ29sdW1uVHJhbnNsYXRlID0gVHJhbnNsYXRhYmxlKCdDb250ZW50IFR5cGUnKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQEFsbENvbHVtbnMsIHsKICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIENvbHVtblRyYW5zbGF0ZSA9PiAkQ29sdW1uVHJhbnNsYXRlLAogICAgICAgIH07CgogICAgICAgICMgQWx3YXlzIHByZXNlbnQsIGFscmVhZHkgYWRkZWQuCiAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiBlcSAnRkFRTnVtYmVyJzsKCiAgICAgICAgIyBGZiBlbmFibGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JENvbHVtbn0gPT0gMiApIHsKICAgICAgICAgICAgbXkgJENvbHVtbk5hbWUgPSAnJzsKCiAgICAgICAgICAgICMgT3RoZXIgRkFRIGZpZWxkcy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uTmFtZSA9ICRDb2x1bW5UcmFuc2xhdGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gc3tEeW5hbWljRmllbGRffXt9ZzsKCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICRDb2x1bW5OYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBIZWFkbGluZSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29sdW1uTmFtZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBDcmVhdGUgdGhlIGl0ZW0gbGlzdCAodGFibGUgY29udGVudCkuCiAgICBteSBASXRlbUxpc3Q7CiAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIEV4dHJhY3QgRkFRIGRhdGEuCiAgICAgICAgbXkgJEZBUSA9ICRMaW5rTGlzdHskRkFRSUR9LT57RGF0YX07CgogICAgICAgICMgRkFRIE51bWJlciBtdXN0IGJlIHByZXNlbnQgKHNpbmNlIGl0IGNvbnRhaW5zIG1hc3RlciBsaW5rIHRvIHRoZSBGQVEpLgogICAgICAgIG15IEBJdGVtQ29sdW1ucyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICBLZXkgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBMaW5rICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfSAuICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEZBUUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQgeyAkU29ydE9yZGVyeyRhfSA8PT4gJFNvcnRPcmRlcnskYn0gfSBrZXlzICVVc2VyQ29sdW1ucyApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiBlcSAnRkFRTnVtYmVyJzsgICAgIyBBbHdheXMgcHJlc2VudCwgYWxyZWFkeSBhZGRlZC4KCiAgICAgICAgICAgICMgaWYgZW5hYmxlZCBieSBkZWZhdWx0CiAgICAgICAgICAgIGlmICggJFVzZXJDb2x1bW5zeyRDb2x1bW59ID09IDIgKSB7CgogICAgICAgICAgICAgICAgbXkgJUhhc2g7CiAgICAgICAgICAgICAgICBpZiAoIGdyZXAgeyAkXyBlcSAkQ29sdW1uIH0gQFRpbWVMb25nVHlwZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhhc2h7J1R5cGUnfSA9ICdUaW1lTG9uZyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGFzaHsnVHlwZSd9ID0gJ1RleHQnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRIYXNoe01heExlbmd0aH0gPSA1MDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEZBUSBmaWVsZHMuCiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0FwcHJvdmVkJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJEZBUS0+eyRDb2x1bW59ID8gJ1llcycgOiAnTm8nOwogICAgICAgICAgICAgICAgICAgICAgICAkSGFzaHsnQ29udGVudCd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpLT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRIYXNoeydDb250ZW50J30gPSAkRkFRLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHN7RHluYW1pY0ZpZWxkX317fWc7CgogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAjIEdldCBmaWVsZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJEhhc2h7J0NvbnRlbnQnfSA9ICRWYWx1ZVN0cmctPntUaXRsZX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIFwlSGFzaDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBASXRlbUxpc3QsIFxASXRlbUNvbHVtbnM7CiAgICB9CgogICAgcmV0dXJuIGlmICFASXRlbUxpc3Q7CgogICAgIyBEZWZpbmUgdGhlIGJsb2NrIGRhdGEuCiAgICBteSAlQmxvY2sgPSAoCiAgICAgICAgT2JqZWN0ICAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSwKICAgICAgICBCbG9ja25hbWUgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgT2JqZWN0TmFtZSA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0TmFtZX0sCiAgICAgICAgT2JqZWN0SUQgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIEhlYWRsaW5lICAgPT4gXEBIZWFkbGluZSwKICAgICAgICBJdGVtTGlzdCAgID0+IFxASXRlbUxpc3QsCiAgICAgICAgQWxsQ29sdW1ucyA9PiBcQEFsbENvbHVtbnMsCiAgICApOwoKICAgIHJldHVybiAoIFwlQmxvY2sgKTsKfQoKPWl0ZW0gVGFibGVDcmVhdGVTaW1wbGUoKQoKcmV0dXJuIGEgaGFzaCB3aXRoIHRoZSBsaW5rIG91dHB1dCBkYXRhCgogICAgbXkgJUxpbmtPdXRwdXREYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlU2ltcGxlKAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlIFJldHVybgoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICgKICAgICAgICBOb3JtYWw6OlNvdXJjZSA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo1NTU1NScsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzU1NTU1NTogVGhlIEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSMyMjIyMjogVGl0bGUgb2YgRkFRIDIyMjIyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBQYXJlbnRDaGlsZDo6VGFyZ2V0ID0+IHsKICAgICAgICAgICAgVGlja2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjc3Nzc3JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjNzc3Nzc6IEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlU2ltcGxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRGQVFIb29rID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICVMaW5rT3V0cHV0RGF0YTsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgbXkgQEl0ZW1MaXN0OwogICAgICAgICAgICBmb3IgbXkgJEZBUUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAkRkFRID0gJERpcmVjdGlvbkxpc3QtPnskRkFRSUR9OwoKICAgICAgICAgICAgICAgICMgZGVmaW5lIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgbXkgJUl0ZW0gPSAoCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjonIC4gJEZBUS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiJEZBUUhvb2skRkFRLT57TnVtYmVyfTogJEZBUS0+e1RpdGxlfSIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRGQVFJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXCVJdGVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBpdGVtIGxpc3QgdG8gbGluayBvdXRwdXQgZGF0YQogICAgICAgICAgICAkTGlua091dHB1dERhdGF7ICRMaW5rVHlwZSAuICc6OicgLiAkRGlyZWN0aW9uIH0tPntGQVF9ID0gXEBJdGVtTGlzdDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVMaW5rT3V0cHV0RGF0YTsKfQoKPWl0ZW0gQ29udGVudFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm4gYSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkNvbnRlbnRTdHJpbmdDcmVhdGUoCiAgICAgICAgQ29udGVudERhdGEgPT4gJEhhc2hSZWYsCiAgICApOwoKPWN1dAoKc3ViIENvbnRlbnRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbnRlbnREYXRhfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFRPRE86IGNoZWNrIHdoeSBubyByZXR1cm4gaXMgbmVlZGVkIQogICAgcmV0dXJuOwp9Cgo9aXRlbSBTZWxlY3RhYmxlT2JqZWN0TGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlbGVjdGFibGUgb2JqZWN0cwoKICAgIG15IEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICRMaW5rT2JqZWN0LT5TZWxlY3RhYmxlT2JqZWN0TGlzdCgKICAgICAgICBTZWxlY3RlZCA9PiAkSWRlbnRpZmllciwgICMgKG9wdGlvbmFsKQogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIFZhbHVlID0+ICdGQVEnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGVjdGVkOwogICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICYmICRQYXJhbXtTZWxlY3RlZH0gZXEgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gKSB7CiAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgIH0KCiAgICAjIG9iamVjdCBzZWxlY3QgbGlzdAogICAgbXkgQE9iamVjdFNlbGVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICAgICAgU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBAT2JqZWN0U2VsZWN0TGlzdDsKfQoKPWl0ZW0gU2VhcmNoT3B0aW9uTGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlYXJjaCBvcHRpb25zCgogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAkTGlua09iamVjdC0+U2VhcmNoT3B0aW9uTGlzdCgKICAgICAgICBTdWJPYmplY3QgPT4gJ0JsYScsICAjIChvcHRpb25hbCkKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ZBUSMnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnMTIzNCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJ0JsYUJsYScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT3B0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2VhcmNoIG9wdGlvbiBsaXN0CiAgICBteSAkRkFRSG9vayAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgPT4gJEZBUUhvb2ssCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdUaXRsZScsCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ1doYXQnLAogICAgICAgICAgICBOYW1lID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvcm0ga2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBhZGQgZm9ybSBkYXRhIGFuZCBpbnB1dCBzdHJpbmcKICAgIFJPVzoKICAgIGZvciBteSAkUm93IChAU2VhcmNoT3B0aW9uTGlzdCkgewoKICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICAkUm93LT57Rm9ybURhdGF9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFJvdy0+e0Zvcm1LZXl9ICk7CgogICAgICAgICMgcGFyc2UgdGhlIGlucHV0IHRleHQgYmxvY2sKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbnB1dFRleHQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRSb3ctPntGb3JtRGF0YX0gfHwgJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIGlucHV0IHN0cmluZwogICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnTGlua09iamVjdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gQFNlYXJjaE9wdGlvbkxpc3Q7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRhdGEKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17RGF0YX0gbmUgJ1NDQUxBUic7CiAgICByZXR1cm4gaWYgISR7ICRQYXJhbXtEYXRhfSB9OwogICAgcmV0dXJuIGlmICEkUGFyYW17VGVtcGxhdGVGaWxlfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgcmV0dXJuIGlmICEkTGF5b3V0T2JqZWN0LT57RW52UmVmfS0+eydVc2VySXNHcm91cFJvW2ZhcV0nfTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBhbGxvd2VkIHRlbXBsYXRlIG5hbWVzCiAgICBteSAkVmFsaWRUZW1wbGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0JyktPntGQVF9LT57VGVtcGxhdGVzfTsKCiAgICAjIGNoZWNrIHRlbXBsYXRlIG5hbWUKICAgIHJldHVybiBpZiAhJFZhbGlkVGVtcGxhdGVzLT57ICRQYXJhbXtUZW1wbGF0ZUZpbGV9IH07CgogICAgIyBpZiBubyBzZXNzaW9uIGNvb2tpZXMgYXJlIHVzZWQgd2UgYXR0YWNoIHRoZSBzZXNzaW9uIGFzIFVSTCBwYXJhbWV0ZXIKICAgIG15ICRTZXNzaW9uU3RyaW5nID0gJyc7CiAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ1Nlc3Npb25Vc2VDb29raWUnKSApIHsKICAgICAgICBteSAkU2Vzc2lvbklEID0gJFBhcmFte1Nlc3Npb25JRH0KICAgICAgICAgICAgfHwgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uTmFtZScpICkKICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgJFNlc3Npb25TdHJpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Nlc3Npb25OYW1lJykgLiAnPScgLiAkU2Vzc2lvbklEIC4gJzsnOwogICAgfQoKICAgIG15ICRTdGFydFBhdHRlcm4gICAgPSAnPCEtLSBbIF0gT3V0cHV0RmlsdGVySG9va19UaWNrZXRPcHRpb25zRW5kIFsgXSAtLT4gLis/JzsKICAgIG15ICRGQVFUcmFuc2xhdGFibGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpOwoKICAgICMgYWRkIEZBUSBsaW5rIHRvIGFuIGV4aXN0aW5nIE9wdGlvbnMgYmxvY2sKICAgICMkRmluaXNoUGF0dGVybiB3aWxsIGJlIHJlcGxhY2VkIGJ5ICRSZXBsYWNlCiAgICBpZiAoICR7ICRQYXJhbXtEYXRhfSB9ID1+IG17ICRTdGFydFBhdHRlcm4gfWl4bXMgKSB7CgogICAgICAgIG15ICRGaW5pc2hQYXR0ZXJuID0gJzwvZGl2Pic7CiAgICAgICAgbXkgJFJlcGxhY2UgICAgICAgPSA8PCJFTkQiOwogICAgICAgICAgICAgICAgICAgICAgICA8YSAgaHJlZj1cIiNcIiBpZD1cIk9wdGlvbkZBUVwiPlsgJEZBUVRyYW5zbGF0YWJsZSBdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpFTkQKICAgICAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgJEZpbmlzaFBhdHRlcm4gfXskMSRSZXBsYWNlfWl4bXM7CgogICAgICAgICMgaW5qZWN0IHRoZSBuZWNlc3NhcnkgSlMgaW50byB0aGUgdGVtcGxhdGUKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSggQ29kZSA9PiA8PCJFT0YiKTsKLypnbG9iYWwgRkFROiB0cnVlICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLkluaXRGQVFUaWNrZXRDb21wb3NlKFwkKCcjUmljaFRleHQnKSk7ClwkKCcjT3B0aW9uRkFRJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBGQVFJRnJhbWUgPSAnPGlmcmFtZSBjbGFzcz1cIlRleHRPcHRpb24gRkFRXCIgc3JjPVwiJyArIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJykgKyAnPycgKyAnJFNlc3Npb25TdHJpbmcnICsgJ0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO05hdj1Ob25lO1N1YmplY3Q9O1doYXQ9XCI+PC9pZnJhbWU+JzsKICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEZBUUlGcmFtZSwgJycsICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKRU9GCgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYWRkIEZBUSBsaW5rIGFuZCBpdHMgb3duIGJsb2NrLCBpZiB0aGVyZSBubyBUaWNrZXRPcHRpb25zIGJsb2NrIHdhcyBjYWxsZWQKICAgICRTdGFydFBhdHRlcm4gPSAnPCEtLSBbIF0gT3V0cHV0RmlsdGVySG9va19Ob1RpY2tldE9wdGlvbnNGYWxsYmFjayBbIF0gLS0+IC4rPyc7CiAgICBteSAkT3B0aW9uc1RyYW5zbGF0YWJsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnT3B0aW9ucycpOwogICAgbXkgJFJlcGxhY2UgICAgICAgICAgICAgPSA8PCJFTkQiOwo8IS0tIE91dHB1dEZpbHRlckhvb2tfTm9UaWNrZXRPcHRpb25zRmFsbGJhY2sgLS0+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiRPcHRpb25zVHJhbnNsYXRhYmxlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSAgaHJlZj1cIiNcIiBpZD1cIk9wdGlvbkZBUVwiPlsgJEZBUVRyYW5zbGF0YWJsZSBdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJDbGVhclwiPjwvZGl2PgpFTkQKICAgICR7ICRQYXJhbXtEYXRhfSB9ID1+IHN7ICgkU3RhcnRQYXR0ZXJuKSB9eyRSZXBsYWNlfWl4bXM7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoIENvZGUgPT4gPDwiRU9GIik7Ci8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5Jbml0RkFRVGlja2V0Q29tcG9zZShcJCgnI1JpY2hUZXh0JykpOwpcJCgnI09wdGlvbkZBUScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRSUZyYW1lID0gJzxpZnJhbWUgY2xhc3M9IlRleHRPcHRpb24gRkFRIiBzcmM9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpICsgJz8nICsgJyRTZXNzaW9uU3RyaW5nJyArICdBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtOYXY9Tm9uZTtTdWJqZWN0PTtXaGF0PSI+PC9pZnJhbWU+JzsKICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEZBUUlGcmFtZSwgJycsICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKRU9GCgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRUmVsYXRlZEFydGljbGVzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVOYW1lID0gJFBhcmFte1RlbXBsYXRlRmlsZX0gfHwgJyc7CgogICAgcmV0dXJuIDEgaWYgISRUZW1wbGF0ZU5hbWU7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgcmV0dXJuIDEgaWYgISRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6UmVsYXRlZEFydGljbGVzOjpFbmFibGVkJyk7CgogICAgbXkgJE91dHB1dEZpbHRlclBvc3RDb25maWdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcpOwoKICAgIHJldHVybiBpZiAhJE91dHB1dEZpbHRlclBvc3RDb25maWdzOwogICAgcmV0dXJuIGlmIHJlZiAkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3MgbmUgJ0hBU0gnOwoKICAgICMgRXh0cmFjdCB0aGUgb3V0cHV0IGZpbHRlciBjb25maWcuCiAgICBteSAkT3V0cHV0RmlsdGVyQ29uZmlnID0gJE91dHB1dEZpbHRlclBvc3RDb25maWdzLT57T3V0cHV0RmlsdGVyUG9zdEZBUVJlbGF0ZWRBcnRpY2xlc307CgogICAgcmV0dXJuIGlmICEkT3V0cHV0RmlsdGVyQ29uZmlnOwogICAgcmV0dXJuIGlmIHJlZiAkT3V0cHV0RmlsdGVyQ29uZmlnIG5lICdIQVNIJzsKCiAgICBteSAkVmFsaWRUZW1wbGF0ZXMgPSAkT3V0cHV0RmlsdGVyQ29uZmlnLT57VGVtcGxhdGVzfTsKCiAgICByZXR1cm4gaWYgISRWYWxpZFRlbXBsYXRlczsKICAgIHJldHVybiBpZiByZWYgJFZhbGlkVGVtcGxhdGVzIG5lICdIQVNIJzsKCiAgICAjIEFwcGx5IG9ubHkgaWYgdGVtcGxhdGUgaXMgdmFsaWQgaW4gY29uZmlnLgogICAgcmV0dXJuIDEgaWYgISRWYWxpZFRlbXBsYXRlcy0+eyRUZW1wbGF0ZU5hbWV9OwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUZBUVNlYXJjaFBhcmFtZXRlcjsKCiAgICAjIFNldCBpbnRlcmZhY2Ugc2V0dGluZyB0byAnZXh0ZXJuYWwnLCB0byBzZWFyY2ggb25seSBmb3IgYXBwcm92ZWQgZmFxIGFydGljbGUuCiAgICAkRkFRU2VhcmNoUGFyYW1ldGVye0ludGVyZmFjZX0gPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICRGQVFTZWFyY2hQYXJhbWV0ZXJ7U3RhdGVzfSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIFRlc3QgaWYgY3VzdG9tZXIvcHVibGljIEZBUSBhcnRpY2xlIGV4aXN0cywgYmVjYXVzZSB3ZSBkb24ndCBzaG93IHRoZSB3aWRnZXQKICAgICMgICBpZiBubyByZWxldmFudCBhcnRpY2xlIGV4aXN0cy4KICAgIG15IEBGQVFBcnRpY2xlSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICVGQVFTZWFyY2hQYXJhbWV0ZXIsCiAgICAgICAgTGltaXQgID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxIGlmICFARkFRQXJ0aWNsZUlEczsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUmVuZGVyIHRoZSBlbXB0eSByZWxhdGVkIEZBUSBhcnRpY2xlIGxpc3QgYW5kIGFkZCB0aGUgaW5pdGlhbCB3ZGlnZXQgaHRtbCBjb2RlIHRvIHRoZSBwYWdlLgogICAgbXkgJEN1c3RvbWVyUmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzJywKICAgICAgICBEYXRhICAgICAgICAgPT4ge30sCiAgICApOwoKICAgIG15ICRTZWFyY2ggPSAnKDxkaXYgaWQ9IlJpY2hUZXh0U2VydmVyRXJyb3IiW14+XSo+Lio/PFwvZGl2PikoXHMqPGRpdiBjbGFzcz0iQ2xlYXIiPjxcL2Rpdj5ccyo8XC9kaXY+KSc7CiAgICAkeyAkUGFyYW17RGF0YX0gfQogICAgICAgID1+IHN7JFNlYXJjaH17JDE8ZGl2IGlkPSJGQVFSZWxhdGVkQXJ0aWNsZXMiIGNsYXNzPSJIaWRkZW4iPiRDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmc8L2Rpdj4kMn1tc2c7CgogICAgbXkgJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSIpOwogICAgbXkgJEZyb250ZW5kQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXNDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzIik7CgogICAgbXkgJFF1ZXVlc0VuYWJsZWQgICAgID0gJEZyb250ZW5kQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXNDb25maWctPnsnUXVldWVzRW5hYmxlZCd9IHx8ICcnOwogICAgbXkgJFF1ZXVlc0VuYWJsZWRTdHJnID0gJyc7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkUXVldWVzRW5hYmxlZCkgKSB7CgogICMgRG9uJ3Qgc2hvdyB0aGUgZnVuY3Rpb25hbGl0eSwgaWYgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgdGhlIGRlZmF1bHQgcXVldWUgaXMgbm90IGluIHRoZSBlbmFibGVkIHF1ZXVlcy4KICAgICAgICBpZiAoICEkRnJvbnRlbmRDdXN0b21lclRpY2tldE1lc3NhZ2VDb25maWctPntRdWV1ZX0gKSB7CiAgICAgICAgICAgIG15ICVMb29rdXBRdXF1ZXNFbmFibGVkID0gbWFwIHsgJF8gPT4gMSB9IEB7JFF1ZXVlc0VuYWJsZWR9OwoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICBpZiAhJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnLT57UXVldWVEZWZhdWx0fQogICAgICAgICAgICAgICAgfHwgISRMb29rdXBRdXF1ZXNFbmFibGVkeyAkRnJvbnRlbmRDdXN0b21lclRpY2tldE1lc3NhZ2VDb25maWctPntRdWV1ZURlZmF1bHR9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUXVldWVzRW5hYmxlZFN0cmcgPSBqb2luKCAiJywnIiwgQHskUXVldWVzRW5hYmxlZH0gKTsKICAgICAgICAgICAgJFF1ZXVlc0VuYWJsZWRTdHJnID0gIickUXVldWVzRW5hYmxlZFN0cmcnIjsKICAgICAgICB9CiAgICB9CgogICAgIyBUT0RPIHRoZSBKUyBzaG91bGQgYmUgbW92ZWQgaW4gYSBvd24gSlMgZmlsZSB3aXRoIE9UUlMgNiEKICAgICMgaW5qZWN0IHRoZSBuZWNlc3NhcnkgSlMgaW50byB0aGUgdGVtcGxhdGUKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKCBDb2RlID0+IDw8IkVPRiIpOwp2YXIgUXVldWVzRW5hYmxlZCA9IFsgJFF1ZXVlc0VuYWJsZWRTdHJnIF0sCkxhc3REYXRhOwoKXCQoJyNEZXN0Jykub24oJ2NoYW5nZS5SZWxhdGVkRkFRQXJ0aWNsZScsIGZ1bmN0aW9uICgpIHsKICAgIHZhciBTZWxlY3RlZFF1ZXVlID0gXCQodGhpcykudmFsKCksCiAgICAgICAgU2VsZWN0ZWRRdWV1ZU5hbWUgPSBTZWxlY3RlZFF1ZXVlLnJlcGxhY2UoL1xcZCpcXHxcXHwtPy8sICcnKTsKCiAgICBpZiAoIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaGFzQ2xhc3MoJ0hpZGRlbicpICYmICghUXVldWVzRW5hYmxlZC5sZW5ndGggfHwgIVNlbGVjdGVkUXVldWVOYW1lIHx8IFwkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID4gLTEpICkgewogICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgICAgICBpZiAoXCQoJyNTdWJqZWN0JykudmFsKCkgfHwgQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLmdldERhdGEoKSkgewogICAgICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmICggIVNlbGVjdGVkUXVldWVOYW1lIHx8ICggUXVldWVzRW5hYmxlZC5sZW5ndGggJiYgXCQuaW5BcnJheShTZWxlY3RlZFF1ZXVlTmFtZSwgUXVldWVzRW5hYmxlZCkgPT0gLTEgKSApIHsKICAgICAgICBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgIH0KfSk7CgpcJCgnI1N1YmplY3QnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICB2YXIgU2VsZWN0ZWRRdWV1ZSA9IFwkKCcjRGVzdCcpLnZhbCgpLAogICAgICAgIFNlbGVjdGVkUXVldWVOYW1lLAogICAgICAgIERhdGE7CgogICAgaWYgKFNlbGVjdGVkUXVldWUpIHsKICAgICAgICBTZWxlY3RlZFF1ZXVlLnJlcGxhY2UoL1xcZCpcXHxcXHwtPy8sICcnKQogICAgfQoKICAgIGlmICggIVF1ZXVlc0VuYWJsZWQubGVuZ3RoIHx8ICFTZWxlY3RlZFF1ZXVlTmFtZSB8fCBcJC5pbkFycmF5KFNlbGVjdGVkUXVldWVOYW1lLCBRdWV1ZXNFbmFibGVkKSA+IC0xICkgewoKICAgICAgICBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgICAgIFN1YmplY3Q6IFwkKCcjU3ViamVjdCcpLnZhbCgpLAogICAgICAgICAgICBCb2R5OiBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCAhTGFzdERhdGEgfHwgTGFzdERhdGEuU3ViamVjdCAhPSBEYXRhLlN1YmplY3QgfHwgTGFzdERhdGEuQm9keSAhPSBEYXRhLkJvZHkgKSB7CgogICAgICAgICAgICBpZiAoIVwkKCcuRkFRTWluaUxpc3QnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzIC5Db250ZW50JykuaHRtbCgnPGRpdiBjbGFzcz0iQ2VudGVyIj48c3BhbiBjbGFzcz0iQUpBWExvYWRlciIgdGl0bGU9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSArICciPjwvc3Bhbj48L2Rpdj4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICghXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMgLkhlYWRlciAuQUpBWExvYWRlcicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMgLkhlYWRlciBoMycpLmFmdGVyKCc8c3BhbiBjbGFzcz0iQUpBWExvYWRlciIgc3R5bGU9ImZsb2F0OiByaWdodDsgbWFyZ2luOiAwOyIgdGl0bGU9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSArICciPjwvc3Bhbj4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFwkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpKSB7CgogICAgICAgICAgICAgICAgXCQoJyNTdWJqZWN0JykuZGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJykuYWJvcnQoKTsKICAgICAgICAgICAgICAgIFwkKCcjU3ViamVjdCcpLnJlbW92ZURhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBcJCgnI1N1YmplY3QnKS5kYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInLCBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CgogICAgICAgICAgICAgICAgXCQoJyNTdWJqZWN0JykucmVtb3ZlRGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJyk7CgogICAgICAgICAgICAgICAgLy8gUmVtZWJlciB0aGUgbGFzdCBkYXRhIHRvIGV4ZWN1dGUgdGhlIGFqYXggcmVxdWVzdCBvbmx5IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgIExhc3REYXRhID0gRGF0YTsKCiAgICAgICAgICAgICAgICBpZiAoIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykubGVuZ3RoICkgewoKICAgICAgICAgICAgICAgICAgICBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmh0bWwoUmVzcG9uc2UuQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgIH0KfSk7CgpcJCgnI1N1YmplY3QnKS5vbigncGFzdGUga2V5ZG93bicsIGZ1bmN0aW9uIChFdmVudCkgewogICAgdmFyIFZhbHVlID0gXCQoJyNTdWJqZWN0JykudmFsKCk7CgogICAgLy8gdHJpZ2dlciBvbmx5IHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHRoZSBzdWJqZWN0LCBpZiBzcGFjZSBvciBlbnRlciB3YXMgcHJlc3NlZAogICAgaWYgKCggRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmICggRXZlbnQud2hpY2ggPT0gMzIgfHwgRXZlbnQud2hpY2ggPT0gMTMgKSAmJiAoIFZhbHVlLmxlbmd0aCA+IDEwIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgIH0KfSk7CgovLyBUaGUgImNoYW5nZSIgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgpDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oICdrZXknLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QsIGlmIHNwYWNlIG9yIGVudGVyIHdhcyBwcmVzc2VkCiAgICBpZiAoIEV2ZW50LmRhdGEua2V5Q29kZSA9PSAzMiB8fCBFdmVudC5kYXRhLmtleUNvZGUgPT0gMTMpIHsKICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgIH0KfSk7CgovLyBUaGUgInBhc3RlIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIHBhc3RlIGlzIG1hZGUgaW4gdGhlIGVkaXRvci4KQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLm9uKCAncGFzdGUnLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QKICAgIFwkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwp9KTsKCi8vIFRoZSAiYmx1ciIgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBibHVyIGlzIG1hZGUgaW4gdGhlIGVkaXRvci4KQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLm9uKCAnYmx1cicsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdAogICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7Cn0pOwoKLy8gVHJpZ2dlciB0aGUgJ1JlbGF0ZWRGQVFBcnRpY2xlJyBjaGFuZ2UgZXZlbnQgdG8gaGlkZS9zaG93IHRoZSByZWxhdGQgZmFxIGFydGljbGUgd2lkZ2V0IGZvciB0aGUgY2FzZQovLyAgdGhhdCB0aGUgcXVldWUgaXMgYWxyZWFkeSBzZWxlY3RlZCBhdCB0aGUgcGFnZSBsb2FkIG9yIHNob3cgdGhlIHdpZGdldCBhbHdheXMgaWYgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpcyBkaXNhYmxlZC4KaWYgKCAhXCQoJyNEZXN0JykubGVuZ3RoICkgewogICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgIGlmIChcJCgnI1N1YmplY3QnKS52YWwoKSB8fCBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpKSB7CiAgICAgICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICB9Cn0KZWxzZSB7CiAgICBcJCgnI0Rlc3QnKS50cmlnZ2VyKCdjaGFuZ2UuUmVsYXRlZEZBUUFydGljbGUnKTsKfQoKRU9GCgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQWRkIEZBUSBBcnRpY2xlIikgfCBodG1sICVdPC9oMT4KICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQWRkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJLZXl3b3JkcyIgaWQ9IktleXdvcmRzIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkcyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkNhdGVnb3J5SUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPiogPC9zcGFuPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYW5ndWFnZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJOb0xhbmd1YWdlIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcHByb3ZhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQXBwcm92YWxPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBcHByb3ZhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRVcGxvYWQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuRmlsZXNpemUgfCBodG1sICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBpZD0iQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXSIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvYnV0dG9uPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0F0dGFjaG1lbnREZWxldGVbJSBEYXRhLkZpbGVJRCB8IGh0bWwgJV0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJCgnI0F0dGFjaG1lbnREZWxldGVbJSBEYXRhLkZpbGVJRCB8IGh0bWwgJV0nKS5jbG9zZXN0KCdmb3JtJykpOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iNDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQXR0YWNobWVudFVwbG9hZCIgbmFtZT0iQXR0YWNobWVudFVwbG9hZCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjRmlsZVVwbG9hZCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciAkRm9ybSA9ICQoJyNGaWxlVXBsb2FkJykuY2xvc2VzdCgnZm9ybScpOwogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5EaXNhYmxlVmFsaWRhdGlvbigkRm9ybSk7CiAgICAgICAgJEZvcm0uZmluZCgnI0F0dGFjaG1lbnRVcGxvYWQnKS52YWwoJzEnKS5lbmQoKS5zdWJtaXQoKTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50VXBsb2FkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJpY2hUZXh0IikgJV0KWyUgSW5zZXJ0VGVtcGxhdGUoIlJpY2hUZXh0RWRpdG9yLnR0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJpY2hUZXh0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuRmllbGQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PGJyLz48c3BhbiBjbGFzcz0iRkFRU3RhdGVOYW1lIj4oWyUgVHJhbnNsYXRlKERhdGEuU3RhdGVOYW1lKSB8IGh0bWwgJV0pPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIGNsYXNzPSJSaWNoVGV4dCIgbmFtZT0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSI3MCI+WyUgRGF0YS5Db250ZW50IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJDcmVhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFBZGQiKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjRkFRU3VibWl0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIC8vIHByZXZlbnQgdG9vIGZhc3Qgc3VibWl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgaW50byBubyBjaGFuZ2VzIHNlbnQgdG8gc2VydmVyLCBkdWUgdG8gUlRFIHRvCiAgICAvLyB0ZXh0YXJlYSBkYXRhIHRyYW5zZmVyCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnI0ZBUVN1Ym1pdCcpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0sIDI1MCk7Cn0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJBc0Jsb2NrIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0gKFslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg1MCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3J5U2hvcnROYW1lIHwgaHRtbCAlXSAtIFslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgIDwvdGJvZHk+CjwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkxpc3QiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBjYXRlZ29yeSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQoKICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uTGlzdCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgWyUgSUYgRGF0YS5WYWxpZCAhPSAndmFsaWQnJV1jbGFzcz0iSW52YWxpZCJbJSBFTkQgJV0gPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249Q2hhbmdlO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWQpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciBMYXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iRGVsZXRlQ2F0ZWdvcnlJRFslIERhdGEuQ2F0ZWdvcnlJRCB8IGh0bWwgJV0iIGNsYXNzPSJUcmFzaENhbiIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVDYXRlZ29yeUlEWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlQ2F0ZWdvcnlJRFslIERhdGEuQ2F0ZWdvcnlJRCB8IGh0bWwgJV0nLAogICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzogICAnQWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnk7U3ViYWN0aW9uPURlbGV0ZTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXScsCiAgICAgICAgQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmc6ICdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249RGVsZXRlQWN0aW9uO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdJywKICAgICAgICBEaWFsb2dUaXRsZTogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgQ2F0ZWdvcnkiKSB8IEpTT04gJV0sCiAgICAgICAgVHJhbnNsYXRlZFRleHQ6ICAgICAgICAgICAgIHsKICAgICAgICAgICAgWWVzOiBbJSBUcmFuc2xhdGUoIlllcyIpIHwgSlNPTiAlXSwKICAgICAgICAgICAgTm86ICBbJSBUcmFuc2xhdGUoIk5vIikgfCBKU09OICVdLAogICAgICAgICAgICBPazogIFslIFRyYW5zbGF0ZSgiT2siKSB8IEpTT04gJV0KICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyQWRkIikgJV0KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBDYXRlZ29yeSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQ2F0ZWdvcnkiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSJbJSBEYXRhLkNhdGVnb3J5SUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZShEYXRhLk5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUGFyZW50SUQiPlslIFRyYW5zbGF0ZSgiU3ViY2F0ZWdvcnkgb2YiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DYXRlZ29yeU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iUGVybWlzc2lvbkdyb3VwcyI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJQZXJtaXNzaW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuR3JvdXBPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBlcm1pc3Npb25Hcm91cHNFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBlcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5LiIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDb21tZW50Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNvbW1lbnQiIGlkPSJDb21tZW50IiB2YWx1ZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuQ29tbWVudFNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSI4MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29tbWVudEVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29tbWVudFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuIikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdVcGRhdGUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXciKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0FmZmVjdGVkIikgJV0KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVzMwMHB4Ij4KICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5PyIpIHwgaHRtbCAlXQo8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJOb0FmZmVjdGVkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkIikgJV0KPHA+CiAgICBbJSBUcmFuc2xhdGUoIllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSIpIHwgaHRtbCAlXQo8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zIikgJV0KPHAgY2xhc3M9IlNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbSI+CiAgICBbJSBUcmFuc2xhdGUoIlRoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpIikgfCBodG1sICVdOgo8L3A+Cjx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayAlXTtBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2E+CiAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCjwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkU3ViQ2F0ZWdvcmllcyIpICVdCjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV06CjwvcD4KPHVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3ciKSAlXQogICAgPGxpIGNsYXNzPSJJbmRlbnQgU3BhY2luZ0JvdHRvbVNtYWxsIj4KICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgJV07QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICBbJSBEYXRhLkxvbmdOYW1lIHwgaHRtbCAlXQogICAgICAgIDwvYT4KICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3ciKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRTdWJDYXRlZ29yaWVzIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJEZWxldGUiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyIpIHwgaHRtbCAlXQo8L3A+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhcnROb3JtYWwiKSAlXQogICAgPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gRm9ybVNjcmVlbiBOb1NpZGViYXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZSgiRkFRIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0Tm9ybWFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJGQVEiKSB8IGh0bWwgJV06IFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydFNtYWxsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUVkaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2NyZWVuVHlwZSIgdmFsdWU9IlslIERhdGEuU2NyZWVuVHlwZSB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgWyUgRGF0YS5GaWVsZHNldENsYXNzIHwgaHRtbCAlXSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkcyI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IlslIERhdGEuS2V5d29yZHMgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDYXRlZ29yeUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlSUQiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYW5ndWFnZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9MYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJOb0xhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFwcHJvdmFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BcHByb3ZhbE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXBwcm92YWwiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRVcGxvYWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXSAoWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBpZD0iQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXSIgbmFtZT0iQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXSIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvYnV0dG9uPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjQXR0YWNobWVudERlbGV0ZVslIERhdGEuRmlsZUlEIHwgaHRtbCAlXScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewpDb3JlLkZvcm0uVmFsaWRhdGUuRGlzYWJsZVZhbGlkYXRpb24oJCgnI0F0dGFjaG1lbnREZWxldGVbJSBEYXRhLkZpbGVJRCB8IGh0bWwgJV0nKS5jbG9zZXN0KCdmb3JtJykpOwp9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IkZpbGVVcGxvYWQiIGlkPSJGaWxlVXBsb2FkIiB0eXBlPSJmaWxlIiBzaXplPSI0MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQXR0YWNobWVudFVwbG9hZCIgbmFtZT0iQXR0YWNobWVudFVwbG9hZCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjRmlsZVVwbG9hZCcpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChFdmVudCkgewp2YXIgJEZvcm0gPSAkKCcjRmlsZVVwbG9hZCcpLmNsb3Nlc3QoJ2Zvcm0nKTsKQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCRGb3JtKTsKJEZvcm0uZmluZCgnI0F0dGFjaG1lbnRVcGxvYWQnKS52YWwoJzEnKS5lbmQoKS5zdWJtaXQoKTsKfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRVcGxvYWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmljaFRleHQiKSAlXQpbJSBJbnNlcnRUZW1wbGF0ZSgiUmljaFRleHRFZGl0b3IudHQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmljaFRleHQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuRmllbGQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PGJyLz48c3BhbiBjbGFzcz0iRkFRU3RhdGVOYW1lIj4oWyUgVHJhbnNsYXRlKERhdGEuU3RhdGVOYW1lKSB8IGh0bWwgJV0pPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IjcwIj5bJSBEYXRhLkNvbnRlbnQgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiVXBkYXRlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2siPjwvaT4gWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kTm9ybWFsIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUVkaXQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwokKCcjRkFRU3VibWl0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIC8vIHByZXZlbnQgdG9vIGZhc3Qgc3VibWl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgaW50byBubyBjaGFuZ2VzIHNlbnQgdG8gc2VydmVyLCBkdWUgdG8gUlRFIHRvCiAgICAvLyB0ZXh0YXJlYSBkYXRhIHRyYW5zZmVyCiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnI0ZBUVN1Ym1pdCcpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0sIDI1MCk7Cn0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGQVEiPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvaDE+CgogICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KICAgICAgICA8bGk+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KCiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gWyUgRGF0YS5TaWRlYmFyQ2xhc3MgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1aWNrU2VhcmNoIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlF1aWNrIFNlYXJjaCIpIHwgaHRtbCAlXTxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGlkPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuQWN0aW9uIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJBZHZhbmNlZCBTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0FnZW50RkFRU2VhcmNoJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLkFnZW50LlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudEZBUVNlYXJjaCcpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KClslIFJlbmRlckJsb2NrRW5kKCJRdWlja1NlYXJjaCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdLgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSAoWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DYXRlZ29yeVNob3J0TmFtZSB8IHRydW5jYXRlKDE1KSB8IGh0bWwgJV0gLSBbJSBEYXRhLkxhbmd1YWdlIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0gLSBbJSBEYXRhLkNyZWF0ZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJjYXRlZ29yaWVzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3ViY2F0ZWdvcmllcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgc3VtbWFyeT0iRkFRIGNhdGVnb3JpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTdWJjYXRlZ29yaWVzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHN1YmNhdGVnb3JpZXMgZm91bmQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlN1YkNhdGVnb3J5Q291bnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQXJ0aWNsZUNvdW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1YmNhdGVnb3JpZXMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRSXRlbUxpc3QiKSAlXQpbJSBEYXRhLkZBUUl0ZW1MaXN0SFRNTCAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRSXRlbUxpc3QiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAvLyBvbmx5IGFjdCBpZiB0aGUgbGluayB3YXMgbm90IGNsaWNrZWQgZGlyZWN0bHkKICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhpc3Rvcnkgb2YiKSB8IGh0bWwgJV0gWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+WyUgVHJhbnNsYXRlKCJDbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBDb250ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgc3VtbWFyeT0iRkFRIGhpc3RvcnkgZGF0YSB0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVXNlciIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkQnkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5VSS5BY3Rpb25Sb3cuSW5pdCgpOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3IFRpY2tldExpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0ZBUUZvdW5kIikgJV0KICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuIikgfCBodG1sICVdCiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRkFRRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRGb3JtIikgJV0KICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIiBzdW1tYXJ5PSJBIGdlbmVyaWMgRkFRIHRhYmxlIj4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVySGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRkFRTnVtYmVyIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5IE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENhdGVnb3J5SGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTmFtZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkFjdGlvbiBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTmFtZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaW1lIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlRpbWUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGltZUhlYWRlciIpICVdCiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDx0ciBpZD0iSXRlbUlEX1slIERhdGEuSXRlbUlEIHwgaHRtbCAlXV9bJSBEYXRhLkNvdW50ZXIgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3ViamVjdCB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5TdWJqZWN0IHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2F0ZWdvcnkiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5KSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5KSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDYXRlZ29yeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5hbWUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5BY3Rpb24pIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkNyZWF0ZWQgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXSI+WyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaW1lIikgJV0KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRGb3JtIikgJV0KPC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkRpc2FibGVkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTm90aWNlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWRtaW5TeXNDb25maWciLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJFZGl0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3lzQ29uZmlnR3JvdXAiIHZhbHVlPSJGQVEiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdTdWJHcm91cCIgdmFsdWU9IkNvcmUiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlTGFuZ3VhZ2VJRFslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0nLAogICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzogICAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZTtMYW5ndWFnZUlEPVslIERhdGEuTGFuZ3VhZ2VJRCB8IHVyaSAlXScsCiAgICAgICAgQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmc6ICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlQWN0aW9uO0xhbmd1YWdlSUQ9WyUgRGF0YS5MYW5ndWFnZUlEIHwgdXJpICVdJywKICAgICAgICBEaWFsb2dUaXRsZTogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgTGFuZ3VhZ2UgJXMiLCBEYXRhLk5hbWUpIHwgSlNPTiAlXSwKICAgICAgICBUcmFuc2xhdGVkVGV4dDogICAgICAgICAgICAgewogICAgICAgICAgICBZZXM6IFslIFRyYW5zbGF0ZSgiWWVzIikgfCBKU09OICVdLAogICAgICAgICAgICBObzogIFslIFRyYW5zbGF0ZSgiTm8iKSB8IEpTT04gJV0sCiAgICAgICAgICAgIE9rOiAgWyUgVHJhbnNsYXRlKCJPayIpIHwgSlNPTiAlXQogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWRkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCB1cmkgJV1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuTmFtZVNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0FmZmVjdGVkSXRlbXMiKSAlXQo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgWyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/IikgfCBodG1sICVdCjwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zIikgJV0KPHA+CiAgICBbJSBUcmFuc2xhdGUoIllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEiKSB8IGh0bWwgJV0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocykiKSB8IGh0bWwgJV06CjwvcD4KCjx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayAlXTtBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2E+CiAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCjwvdWw+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtcyIpICVdClslIFJlbmRlckJsb2NrRW5kKCJEZWxldGUiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgoKICAgIDxoMT5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkRpc2FibGVkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTm90aWNlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWRtaW5TeXNDb25maWciLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJFZGl0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3lzQ29uZmlnR3JvdXAiIHZhbHVlPSJGQVEiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTeXNDb25maWdTdWJHcm91cCIgdmFsdWU9IkNvcmUiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICcjRGVsZXRlTGFuZ3VhZ2VJRFslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0nLAogICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzogICAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZTtMYW5ndWFnZUlEPVslIERhdGEuTGFuZ3VhZ2VJRCB8IHVyaSAlXScsCiAgICAgICAgQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmc6ICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZTtTdWJhY3Rpb249RGVsZXRlQWN0aW9uO0xhbmd1YWdlSUQ9WyUgRGF0YS5MYW5ndWFnZUlEIHwgdXJpICVdJywKICAgICAgICBEaWFsb2dUaXRsZTogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgTGFuZ3VhZ2UgJXMiLCBEYXRhLk5hbWUpIHwgSlNPTiAlXSwKICAgICAgICBUcmFuc2xhdGVkVGV4dDogICAgICAgICAgICAgewogICAgICAgICAgICBZZXM6IFslIFRyYW5zbGF0ZSgiWWVzIikgfCBKU09OICVdLAogICAgICAgICAgICBObzogIFslIFRyYW5zbGF0ZSgiTm8iKSB8IEpTT04gJV0sCiAgICAgICAgICAgIE9rOiAgWyUgVHJhbnNsYXRlKCJPayIpIHwgSlNPTiAlXQogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWRkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCB1cmkgJV1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuTmFtZVNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0FmZmVjdGVkSXRlbXMiKSAlXQo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBDZW50ZXIiPgogICAgWyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/IikgfCBodG1sICVdCjwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zIikgJV0KPHA+CiAgICBbJSBUcmFuc2xhdGUoIllvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEiKSB8IGh0bWwgJV0KPC9wPgo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocykiKSB8IGh0bWwgJV06CjwvcD4KCjx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCiAgICA8bGkgY2xhc3M9IkluZGVudCBTcGFjaW5nQm90dG9tU21hbGwiPgogICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayAlXTtBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPHNwYW4+Jm5ic3A7Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2E+CiAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtc1JvdyIpICVdCjwvdWw+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtcyIpICVdClslIFJlbmRlckJsb2NrRW5kKCJEZWxldGUiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KClslIERhdGEuRGF0YUluVGhlTWlkZGxlICVdCgogICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdDb250cm9sIiBpZD0iT3ZlcnZpZXdDb250cm9sIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuTGlua0JhY2tJRCB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rQmFjayB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnI0ZBUVNlYXJjaCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyggJ0FnZW50RkFRU2VhcmNoJywgIlslIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0iICk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb250ZXh0IFNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiQ29udGV4dCBTZXR0aW5ncyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lciIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXAgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlZGlyZWN0VVJMIiB2YWx1ZT0iWyUgRGF0YS5SZXF1ZXN0ZWRVUkwgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkZBUSBhcnRpY2xlcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICQoJyNTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIFslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IEpTT04gJV0sICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgSlNPTiAlXSwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICApOwogICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFjdGlvblJvdyAlXQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iT3ZlcnZpZXdab29tIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW1hZ2VNb2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5hbWVTaG9ydCI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOYW1lTG9uZyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5VSS5BY3Rpb25Sb3cuSW5pdCgpOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3IFRpY2tldExpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0ZBUUZvdW5kIikgJV0KICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIEZBUSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb0ZBUUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRm9ybSIpICVdCiAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUZBUUlEO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9hPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGl0bGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1UaXRsZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaXRsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENhdGVnb3J5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1DYXRlZ29yeTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhbmd1YWdlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTGFuZ3VhZ2UgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1MYW5ndWFnZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFN0YXRlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1TdGF0ZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0ZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFZhbGlkSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1WYWxpZDtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRWYWxpZEhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZWRIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VkIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9Q2hhbmdlZDtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZWRIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXJTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlck5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlciIpICVdCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxSGVhZGVyIikgJV0KIyAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkR5bmFtaWNGaWVsZCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlclNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxSGVhZGVyU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxSGVhZGVyTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgIDwvdGg+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlciIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQySGVhZGVyIikgJV0KIyAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkR5bmFtaWNGaWVsZCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlclNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQySGVhZGVyU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQySGVhZGVyTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgIDwvdGg+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlciIpICVdCiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDx0ciBpZD0iSXRlbUlEX1slIERhdGEuSXRlbUlEIHwgaHRtbCAlXV9bJSBEYXRhLkNvdW50ZXIgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uWyUgSUYgRGF0YS5WYWxpZElEICE9IDElXSBJbnZhbGlkWyUgRU5EICVdIiA+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICA8dGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV07TmF2PVslIERhdGEuTmF2IHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5OdW1iZXIgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rRW5kIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJMaW5rRW5kIikgJV0KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaXRsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENhdGVnb3J5IikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lLCAiNTAiKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDYXRlZ29yeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFN0YXRlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFZhbGlkIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRWYWxpZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZWQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2hhbmdlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rICVdIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiMgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rICVdIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgIDwvdGQ+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICA8dGQ+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfTGluayIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgJV0iIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyIikgJV0KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRGb3JtIikgJV0KPC9kaXY+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkVtcHR5U2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5FbXB0eVNlYXJjaCB8IGh0bWwgJV0iIGlkPSJFbXB0eVNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IlslIERhdGEuTmF2IHwgaHRtbCAlXSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuUHJvZmlsZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlTmV3IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSIgaWQ9IlNlYXJjaEluc2VydCI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJGaWx0ZXJzIGluIHVzZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZGl0aW9uYWwgZmlsdGVycyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQWRkIGFub3RoZXIgYXR0cmlidXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlc1N0cmcgJV0KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBZGRCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkFkZCBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPdXRwdXQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9mb3JtPgoKICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEhpZGRlbiIgaWQ9IlNlYXJjaEF0dHJpYnV0ZXNIaWRkZW4iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iRnVsbHRleHQiaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIiBpZD0iTGFiZWxOdW1iZXIiPlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0gWyUgVHJhbnNsYXRlKCIoZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqKSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiIGlkPSJMYWJlbFRpdGxlIj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCIgaWQ9IkxhYmVsS2V5d29yZCI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSURzIiBpZD0iTGFiZWxWYWxpZElEcyI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5WYWxpZFNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEcyIgaWQ9IkxhYmVsTGFuZ3VhZ2VJRHMiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkNhdGVnb3J5SURzIiBpZD0iTGFiZWxDYXRlZ29yeUlEcyI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5DYXRlZ29yaWVzU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSURzIiBpZD0iTGFiZWxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWb3RlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsVm90ZVNlYXJjaFR5cGUiPlslIFRyYW5zbGF0ZSgiVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5Wb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSJbJSBEYXRhLlZvdGVTZWFyY2ggfCBodG1sICVdIiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJSYXRlU2VhcmNoVHlwZSIgaWQ9IkxhYmVsUmF0ZVNlYXJjaFR5cGUiPlslIFRyYW5zbGF0ZSgiUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLlJhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICBbJSBEYXRhLlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWRTZWFyY2giIGlkPSJMYWJlbEFwcHJvdmVkU2VhcmNoIj5bJSBUcmFuc2xhdGUoIkFwcHJvdmVkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkFwcHJvdmVkU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkNyZWF0ZWRVc2VySURzIiBpZD0iTGFiZWxDcmVhdGVkVXNlcklEcyI+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiQWdlbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlZFVzZXJTdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTGFzdENoYW5nZWRVc2VySURzIiBpZD0iTGFiZWxMYXN0Q2hhbmdlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiQWdlbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuTGFzdENoYW5nZWRVc2VyU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DcmVhdGVUaW1lUG9pbnQiIGlkPSJMYWJlbEl0ZW1DcmVhdGVUaW1lUG9pbnQiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlcikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0U3RyZyAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdHJnICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ3JlYXRlVGltZVNsb3QiIGlkPSJMYWJlbEl0ZW1DcmVhdGVUaW1lU2xvdCI+WyUgVHJhbnNsYXRlKCJGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVTdG9wU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikl0ZW1DaGFuZ2VUaW1lUG9pbnQiIGlkPSJMYWJlbEl0ZW1DaGFuZ2VUaW1lUG9pbnQiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlcikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgIFslIERhdGEuSXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZyAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lUG9pbnRTdHJnICVdIFslIERhdGEuSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ2hhbmdlVGltZVNsb3QiIGlkPSJMYWJlbEl0ZW1DaGFuZ2VUaW1lU2xvdCI+WyUgVHJhbnNsYXRlKCJGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RhcnRTdHJnICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuSXRlbUNoYW5nZVRpbWVTdG9wU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgWyUgRGF0YS5BdHRyaWJ1dGVzT3JpZ1N0cmcgJV0KCiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IkNvbnRlbnRGb290ZXIgQ2VudGVyIj4KICAgIDxidXR0b24gaWQ9IlNlYXJjaEZvcm1TdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJSdW4gc2VhcmNoIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+IFslIFRyYW5zbGF0ZSgiUnVuIHNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpewpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYU2hvdyIpICVdCiAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKCJbJSBEYXRhLkF0dHJpYnV0ZSB8IGh0bWwgJV0iKTsKWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVhTaG93IikgJV0KICAgICAgICBDb3JlLkFnZW50LlNlYXJjaC5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgfSwgMCk7Ci8vXV0+PC9zY3JpcHQ+CgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQUpBWCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coICdbJSBFbnYoIkFjdGlvbiIpICVdJyApOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2giKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtOdW1iZXI9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgU2VhcmNoIikgfCBodG1sICVdPC9oMT4KICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBDb2xsYXBzZWQiPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgU2VsZWN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iWyUgRGF0YS5OYXYgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJTZWxlY3RUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrIj48L2k+IFslIFRyYW5zbGF0ZSgiU2VsZWN0IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJFcmFzZVRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VhcmNoVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCIgaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj5bJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRHMiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ2F0ZWdvcnlJRHMiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZFNlYXJjaCIgPlslIFRyYW5zbGF0ZSgiQXBwcm92ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFwcHJvdmVkU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9Wb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIlZvdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdm90ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9Wb3RlU2V0IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyB2b3RlcyIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlZvdGVQb2ludCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgIHZhbHVlPSJWb3RlUG9pbnQiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5Wb3RlU2VhcmNoIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIlJhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gcmF0ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9SYXRlU2V0IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkVXNlclN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VkVXNlcklEcyI+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQgYnkiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJBZ2VudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFzdENoYW5nZWRVc2VyU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGltZVNlYXJjaFR5cGUiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVBvaW50IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iTm9DaGFuZ2VUaW1lU2V0IiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkNoYW5nZURhdGVQb2ludCIgbmFtZT0iQ2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNoYW5nZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iQ2hhbmdlRGF0ZVJhbmdlIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXNzVwYyBTcGFjaW5nVG9wIEZBUURpdmlkZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2F2ZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iU2F2ZSBhcyBUZW1wbGF0ZSIgdHlwZT0iY2hlY2tib3giIGlkPSJTYXZlUHJvZmlsZSIgbmFtZT0iU2F2ZVByb2ZpbGUiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IlslIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQ2VudGVyIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaCI+PC9pPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICBbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOiBbJSBEYXRhLk51bWJlciAlXSA8c3Bhbj4mbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KCiAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICA8bGk+CiAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgPGxpPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZBUSBJbmZvcm1hdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUsICIxOCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD1bJSBEYXRhLktleXdvcmQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIj5bJSBEYXRhLktleXdvcmQgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlLCAiMjUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkLCAiMjUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSwgIjE4IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3QXBwcm92YWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBcHByb3ZhbCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5BcHByb3ZhbCkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5BcHByb3ZhbCwgIjE4IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3QXBwcm92YWwiKSAlXQoKIyBzaG93IGZhcSBkeW5hbWljIGZpZWxkcwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rICB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rICB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rICB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMl9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdSYXRpbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXSBbJSBEYXRhLlZvdGVSZXN1bHQgJV0lIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJhdGVTdGFycyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFycyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3UmF0aW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlZvdGVzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlZvdGVzLCAiMTgiKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3Vm90ZXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3Tm9Wb3RlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdm90ZXMgZm91bmQhIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIk5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4iKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3Tm9Wb3RlcyIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdICAoWyUgRGF0YS5DcmVhdGVkQnlVc2VyICVdKTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSAgKFslIERhdGEuQ2hhbmdlZEJ5VXNlciAlXSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlU2ltcGxlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpbmtlZCBPYmplY3RzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMaW5rVGFibGVTaW1wbGUiKSAlXQoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ucyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgaWQ9IlslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBbJSBEYXRhLkxpbmtQYXJhbSAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNob3dDb25maXJtYXRpb25EaWFsb2ciKSAlXQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwovKmdsb2JhbCBGQVE6IHRydWUgKi8KICAgIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuQmluZENvbmZpcm1hdGlvbkRpYWxvZyh7CiAgICAgICAgRWxlbWVudElEOiAgICAgICAgICAgICAgICAgICdbJSBEYXRhLk1lbnVJRCAlXScsCiAgICAgICAgRWxlbWVudFNlbGVjdG9yOiAgICAgICAgICAgICdbJSBEYXRhLkVsZW1lbnRTZWxlY3RvciB8IEludGVycG9sYXRlICVdJywKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmc6ICAgJ1slIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIHwgSW50ZXJwb2xhdGUgJV0nLAogICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiAnWyUgRGF0YS5Db25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyB8IEludGVycG9sYXRlICVdJywKICAgICAgICBEaWFsb2dUaXRsZTogICAgICAgICAgICAgICAgJ1slIERhdGEuRGlhbG9nVGl0bGUgfCBJbnRlcnBvbGF0ZSAlXScsCiAgICAgICAgVHJhbnNsYXRlZFRleHQ6ICAgICAgICAgICAgIHsKICAgICAgICAgICAgWWVzOiBbJSBUcmFuc2xhdGUoIlllcyIpIHwgSlNPTiAlXSwKICAgICAgICAgICAgTm86ICBbJSBUcmFuc2xhdGUoIk5vIikgfCBKU09OICVdLAogICAgICAgICAgICBPazogIFslIFRyYW5zbGF0ZSgiT2siKSB8IEpTT04gJV0KICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJTaG93Q29uZmlybWF0aW9uRGlhbG9nIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgoKICAgICAgICAgICAgPGRpdiBpZD0iRkFRQm9keSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEb3dubG9hZEF0dGFjaG1lbnQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRvd25sb2FkIEF0dGFjaG1lbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO0ZpbGVJRD1bJSBEYXRhLkZpbGVJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmlsZW5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkJyb3dzZXJMaW5rTWVzc2FnZSIpICVdCiMgU2hvdyBpbmZvLCB0aGF0IGxpbmtzIHdpdGhpbiB0aGUgaWZyYW1lIG11c3QgYmUgY2xpY2tlZCB3aXRoIHN0cmcvY21kL3NoaWZ0IChkZXBlbmRpbmcgb24gdGhlIHVzZWQgYnJvd3NlciBhbmQgb3MpCiMgdG8gb3BlbiB0aGUgbGlua3MgaW4gYSBuZXcgd2luZG93IHdpdGhvdXQgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGdpdmVuIHRvIHRoZSBpZnJhbWUKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUU1lc3NhZ2VCcm93c2VyIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2xvc2UiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgbWVzc2FnZSIpIHwgaHRtbCAlXSIgaHJlZj0iIyI+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KFslIFRyYW5zbGF0ZShEYXRhLlN0YXRlTmFtZSkgfCBodG1sICVdKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudEhUTUwiKSAlXQojIGV4ZWN1dGUgSUZyYW1lIEpTIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIGJlZm9yZSBvdXIgQVBJIHdhcyBsb2FkZWQKIyB0aGUgZm9sbG93aW5nIEpTIGNvZGUgbXVzdCBiZSB3aXRoaW4gdGhlIHRlbXBsYXRlLCBvdGhlcndpc2UgaXQgY291bGQgaGFwcGVuLCB0aGF0IGFsc28gdGhpcyBjb2RlIGl0c2VsZiBpcyBub3QgbG9hZGVkIHlldAo8c2NyaXB0PgpmdW5jdGlvbiBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCkgewogICAgaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsKICAgICAgICBGQVEuQWdlbnQuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyMnICsgSUZyYW1lSUQpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpOwogICAgICAgIH0sIDUwMCk7CiAgICB9Cn0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdO1slIEVudigiU2Vzc2lvbk5hbWUiKSB8IGh0bWwgJV09WyUgRW52KCJTZXNzaW9uSUQiKSB8IGh0bWwgJV0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRIVE1MIikgJV0KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIpICVdIiB8fCAwLCAxMCkpOwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4IikgJV0iIHx8IDAsIDEwKSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRVm90aW5nIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFWb3RpbmcgQ29udGVudCIgaWQ9IkZBUVZvdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIiPlslIFRyYW5zbGF0ZSgiSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhIikgfCBodG1sICVdPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iRkFRVm90ZUZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iUmF0ZUJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJub3QgaGVscGZ1bCIpIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVZvdGluZ1JhdGVSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9IlJhdGVCdXR0b25bJSBEYXRhLlZhbHVlICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlQnV0dG9uIFJhdGVVbkNoZWNrZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFWb3RpbmdSYXRlUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgidmVyeSBoZWxwZnVsIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciBjbGFzcz0iQ2xlYXIiIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEhpZGRlbiIgaWQ9IlJhdGVTdWJtaXRCdXR0b24iIG5hbWU9ImJ0biIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiVm90ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiVm90ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudEZBUVpvb20iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2F0ZWdvcnlJRCIgdmFsdWU9IlslIERhdGEuQ2F0ZWdvcnlJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJdGVtSUQiIHZhbHVlPSJbJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSYXRlIiB2YWx1ZT0iIiBpZD0iUmF0ZVZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFWb3RpbmciKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCd1bC5BY3Rpb25zIGEuQXNQb3B1cCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAgKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7CgogICAgJCgnLlJhdGVCdXR0b24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdsaScpLmF0dHIoJ2lkJykucmVwbGFjZSgvUmF0ZUJ1dHRvbi8sICcnKSwgMTApOwogICAgICAgICQoJyNSYXRlVmFsdWUnKS52YWwoUmF0ZU51bWJlcik7CiAgICAgICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICAgICAkKCcjRkFRVm90aW5nJykuZmluZCgnLlJhdGVCdXR0b24nKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgSXRlbVJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2xpJykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgIGlmICggSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlciApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5TZXRBbGxvY2F0aW9uTGlzdCgpOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJab29tIikgfCBodG1sICVdIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06IFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSAmbmRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICA8L2gxPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgPC91bD4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGQVEgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIktleXdvcmRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIj5bJSBEYXRhLktleXdvcmQgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkLCAiMjUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld0FwcHJvdmFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQXBwcm92YWwpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQXBwcm92YWwpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld0FwcHJvdmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdSYXRpbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXSBbJSBEYXRhLlZvdGVSZXN1bHQgJV0lIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj48aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmF0ZVN0YXJUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdSYXRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVm90ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLlZvdGVzIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdWb3RlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdOb1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVm90ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyB2b3RlcyBmb3VuZCEiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLiIpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdOb1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBEYXRhLkNyZWF0ZWQgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXSAoWyUgRGF0YS5DcmVhdGVkQnlMb2dpbiB8IGh0bWwgJV0pIj5bJSBEYXRhLkNyZWF0ZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0gIChbJSBEYXRhLkNyZWF0ZWRCeUxvZ2luIHwgaHRtbCAlXSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0gKFslIERhdGEuQ3JlYXRlZEJ5TG9naW4gfCBodG1sICVdKSI+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdICAoWyUgRGF0YS5DcmVhdGVkQnlMb2dpbiB8IGh0bWwgJV0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuQ2FwdGlvbikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudEhUTUwiKSAlXQojIGV4ZWN1dGUgSUZyYW1lIEpTIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIGJlZm9yZSBvdXIgQVBJIHdhcyBsb2FkZWQKIyB0aGUgZm9sbG93aW5nIEpTIGNvZGUgbXVzdCBiZSB3aXRoaW4gdGhlIHRlbXBsYXRlLCBvdGhlcndpc2UgaXQgY291bGQgaGFwcGVuLCB0aGF0IGFsc28gdGhpcyBjb2RlIGl0c2VsZiBpcyBub3QgbG9hZGVkIHlldAo8c2NyaXB0PgpmdW5jdGlvbiBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCkgewogICAgaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsKICAgICAgICBGQVEuQWdlbnQuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyMnICsgSUZyYW1lSUQpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpOwogICAgICAgIH0sIDUwMCk7CiAgICB9Cn0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdO1slIEVudigiU2Vzc2lvbk5hbWUiKSB8IGh0bWwgJV09WyUgRW52KCJTZXNzaW9uSUQiKSB8IGh0bWwgJV0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRIVE1MIikgJV0KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIpICVdIiB8fCAwLCAxMCkpOwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4IikgJV0iIHx8IDAsIDEwKSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGlucHV0IGlkPSJGQVFJRCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJGQVFJRCIgdmFsdWU9IlslIERhdGEuSUQgfCBodG1sICVdIj4KICAgIDxpbnB1dCBpZD0iRkFRVGl0bGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiAgICA8aW5wdXQgaWQ9IkZBUUJvZHkiIHR5cGU9ImhpZGRlbiIgbmFtZT0iQm9keSIgdmFsdWU9IlslIERhdGEuRnVsbEJvZHkgfCBodG1sICVdIj4KICAgIDxpbnB1dCBpZD0iRkFRUHVibGljTGluayIgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rIiAgdmFsdWU9IlslIERhdGEuUHVibGljbGluayAlXSI+Cgo8L2Rpdj4KCjxkaXYgY2xhc3M9Ilpvb21TbWFsbEZvb3RlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVwZGF0ZUFydGljbGVTdWJqZWN0IikgJV0KICAgIDxpbnB1dCBpZD0iVXBkYXRlQXJ0aWNsZVN1YmplY3RPcHRpb24iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iWm9vbVNtYWxsQnV0dG9uIiBuYW1lPSJVcGRhdGVBcnRpY2xlU3ViamVjdE9wdGlvbiIgY2hlY2tlZD0iY2hlY2tlZCIgdmFsdWUiMSIvPgogICAgPGxhYmVsIGZvcj0iVXBkYXRlQXJ0aWNsZVN1YmplY3RPcHRpb24iPlslIFRyYW5zbGF0ZSgiQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QiKSB8IGh0bWwgJV08L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXBkYXRlQXJ0aWNsZVN1YmplY3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnNlcnRUZXh0IikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydFRleHQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkluc2VydCBGQVEgVGV4dCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluc2VydFRleHQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5zZXJ0RnVsbCIpICVdCiAgICA8YnV0dG9uIGlkPSJJbnNlcnRGdWxsIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRnVsbCBGQVEiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJJbnNlcnRGdWxsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydExpbmsiKSAlXQogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0TGluayIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiSW5zZXJ0IEZBUSBMaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0TGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnNlcnRUZXh0QW5kTGluayIpICVdCiAgICA8YnV0dG9uIGlkPSJJbnNlcnRUZXh0QW5kTGluayIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluc2VydFRleHRBbmRMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydEZ1bGxBbmRMaW5rIikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydEZ1bGxBbmRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0RnVsbEFuZExpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3IiKSAlXQogICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3IiKSAlXQoKICAgIDxhIGlkPSJDYW5jZWwiIGNsYXNzPSJbJSBEYXRhLkNhbmNlbEJ1dHRvbkNsYXNzIHwgaHRtbCAlXSIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8YnIgLz4KCjwvZGl2PgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKLypnbG9iYWwgRkFROiB0cnVlICovCkNvcmUuQ29uZmlnLlNldCgnVGlja2V0Q29tcG9zZS5VcGRhdGVBcnRpY2xlU3ViamVjdCcsICJbJSBEYXRhLlVwZGF0ZUFydGljbGVTdWJqZWN0IHwgaHRtbCAlXSIpOwoKJCgnI0NhbmNlbCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwp9KTsKCiQoJyNJbnNlcnRUZXh0JykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICBJbnNlcnRMaW5rID0gMDsKCiAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRUZXh0KEluc2VydFRleHQsIEluc2VydExpbmspOwp9KTsKCiQoJyNJbnNlcnRMaW5rJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciBJbnNlcnRUZXh0ID0gMCwKICAgICAgICBJbnNlcnRMaW5rID0gMTsKCiAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRUZXh0KEluc2VydFRleHQsIEluc2VydExpbmspOwp9KTsKCiQoJyNJbnNlcnRUZXh0QW5kTGluaycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0RnVsbCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgSW5zZXJ0TGluayA9IDA7CgogICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RnVsbEZBUShJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKfSk7CgokKCcjSW5zZXJ0RnVsbEFuZExpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgIEluc2VydExpbmsgPSAxOwoKICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldEZ1bGxGQVEoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7Cn0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgRXhwbG9yZXIiKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KICAgICAgICAgICAgPGxpPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gTGFyZ2UiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVpY2tTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9IlNlYXJjaEJveCIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IlslIERhdGEuTmF2IHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUXVpY2sgU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkFjdGlvbiB8IHVyaSAlXTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+IFslIFRyYW5zbGF0ZSgiQWR2YW5jZWQgU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1aWNrU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXS4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSAoWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3J5U2hvcnROYW1lIHwgdHJ1bmNhdGUoMTUpIHwgaHRtbCAlXSAtIFslIERhdGEuTGFuZ3VhZ2UgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSAtIFslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJjYXRlZ29yaWVzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJTdWJjYXRlZ29yaWVzIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJTdWJjYXRlZ29yaWVzIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlcyIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0NhdGVnb3J5RGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuU3ViQ2F0ZWdvcnlDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5BcnRpY2xlQ291bnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViY2F0ZWdvcmllcyIpICVdCgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRSXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5GQVFJRFNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07U29ydEJ5PUZBUUlEO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSBbJSBEYXRhLlRpdGxlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9VGl0bGU7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5IFslIERhdGEuQ2F0ZWdvcnlTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1DYXRlZ29yeTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSBbJSBEYXRhLkxhbmd1YWdlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuU3RhdGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1TdGF0ZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRkFRRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGFydGljbGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPVslIERhdGEuRkFRSUQgfCB1cmkgJV0iPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5IiB0aXRsZT0iWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdIj5bJSBEYXRhLkNhdGVnb3J5TmFtZSB8IHRydW5jYXRlKDQ1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiIHRpdGxlPSJbJSBEYXRhLkxhbmd1YWdlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYW5ndWFnZSB8IHRydW5jYXRlKDUpIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iU3RhdGUiPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRSXRlbUxpc3QiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy8gbWFrZSB3aG9sZSBGQVEgSXRlbSByb3cgY2xpY2thYmxlLCBidXQgbm90IHRoZSBoZWFkZXJzLCBjYW4ndCB1c2UgQ29yZS5DdXN0b21lci5DbGlja2FibGVSb3coKQovLyBzaW5jZSBpdCB1c2VzICJ0YWJsZSB0ciIgYXMgc2VsZWN0b3IsIHNlZSBidWcjOTMyOQokKCJ0Ym9keSB0ciIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICQoImEiLCB0aGlzKS5hdHRyKCJocmVmIik7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwo8L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgoKPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlRoaXMgbWlnaHQgYmUgaGVscGZ1bCIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICBbJSBJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdC5zaXplICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgogICAgICAgIFslIEZPUkVBQ0ggRkFRQXJ0aWNsZSBJTiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdCAlXQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD1bJSBGQVFBcnRpY2xlLkl0ZW1JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJbJSBGQVFBcnRpY2xlLlRpdGxlIHwgaHRtbCAlXSAoWyUgRkFRQXJ0aWNsZS5DYXRlZ29yeU5hbWUgfCBodG1sICVdKSI+CiAgICAgICAgICAgICAgICAgICAgWyUgRkFRQXJ0aWNsZS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgWyUgSUYgRkFRQXJ0aWNsZS5Wb3RlcyAmJiBEYXRhLlZvdGVTdGFyc1Zpc2libGUgJiYgRkFRQXJ0aWNsZS5TdGFyQ291bnRlciA+PSBEYXRhLlZvdGVTdGFyc1Zpc2libGUgJV0KICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBGQVFBcnRpY2xlLlN0YXJDb3VudGVyIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIC0gWyUgRklMVEVSIHJlcGVhdChGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXTxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+WyUgRU5EICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICA8L2xpPgogICAgICAgIFslIEVORCAlXQogICAgICAgIDwvdWw+CiAgICBbJSBFTFNJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTFNFICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTkQgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2ZpbGVzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlbGVjdFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iRXJhc2VUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiBcIkpvaG4qblwiIG9yIFwiV2lsbCpcIikiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsVGV4dCI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0IikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iRnVsbFRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iWyUgRGF0YS5GdWxsdGV4dCB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcmllc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZvdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHZvdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVm90ZVNldCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RWb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgdm90ZXMiKSB8IGh0bWwgJV0gdHlwZT0icmFkaW8iIGlkPSJWb3RlUG9pbnQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iVm90ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVm90ZVNlYXJjaCIgdmFsdWU9IlslIERhdGEuVm90ZVNlYXJjaCB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJhdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHJhdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1JhdGVTZXQiPlslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iUmF0ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGltZVNlYXJjaFR5cGUiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGltZSByZXN0cmljdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UaW1lU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGF0ZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnQgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0ICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGVzdCJ7RGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGVSYW5nZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTYXZlUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTYXZlIGFzIFRlbXBsYXRlPyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJTYXZlIGFzIFRlbXBsYXRlIiB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVQcm9maWxlIiBuYW1lPSJTYXZlUHJvZmlsZSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcm9maWwiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiT3V0cHV0IHRvIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2giKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKCJDdXN0b21lciIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2luYXRpb24iKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlRhYnMgUGFnaW5hdGlvbiI+CiAgICAgICAgICAgIDxzdHJvbmc+WyUgRGF0YS5SZXN1bHQgfCBodG1sICVdPC9zdHJvbmc+IFslIFRyYW5zbGF0ZSgib2YiKSB8IGh0bWwgJV0gPHN0cm9uZz5bJSBEYXRhLlRvdGFsSGl0cyB8IGh0bWwgJV08L3N0cm9uZz4gLSBbJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV06IFslIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IlNlYXJjaFRlcm1zIj4KICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VhcmNoIFJlc3VsdHMgZm9yIikgfCBodG1sICVdOjwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZSB8IGh0bWwgJV06IFslIERhdGEuVmFsdWUgfCBodG1sICVdCiMgaGlkZSByZW1vdmUgbGluaywgZnVuY3Rpb25hbGl0eSBpcyBub3QgeWV0IGltcGxlbWVudGVkCiMgICAgICAgICAgICAgICAgPGEgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIikgfCBodG1sICVdIiBocmVmPSJbJSBEYXRhLlNlYXJjaFZhbHVlICVdIj4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hUZXJtcyIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5GQVFJRFNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9VGl0bGU7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBbJSBEYXRhLkNhdGVnb3J5U29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSBbJSBEYXRhLkxhbmd1YWdlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9Q2hhbmdlZDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIFslIERhdGEuQ1NTICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07U2hvd0Nsb3NlZFRpY2tldHM9WyUgRGF0YS5TaG93Q2xvc2VkIHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJFbXB0eU1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJObyBGQVEgZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPVslIERhdGEuRkFRSUQgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj5bJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UdGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZXwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSI+WyUgRGF0YS5DYXRlZ29yeU5hbWUgfCB0cnVuY2F0ZSg2MCkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPlslIERhdGEuTGFuZ3VhZ2UgfCB0cnVuY2F0ZSg1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2hhbmdlZCI+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkR5bmFtaWNGaWVsZCIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtbJSBEYXRhLkxpbmsgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KPC9kaXY+CgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnLk1hc3RlckFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQmFjayIpICVdCiAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBFbnYoIkxhc3RTY3JlZW5PdmVydmlldyIpICVdIj4mbGFycjsgWyUgVHJhbnNsYXRlKCJCYWNrIikgfCBodG1sICVdPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJhY2siKSAlXQoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPHVsIGlkPSJGQVFPcHRpb25zIj4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFQcmludDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1wcmludCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlByaW50IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgICAgICAgICAgPGxpPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPHVsIGlkPSJNZXNzYWdlcyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRIZWFkZXIiKSAlXQogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkF0dGFjaG1lbnRzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYWJlbCI+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50IikgfCBodG1sICVdOjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcGFwZXJjbGlwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEb3dubG9hZEF0dGFjaG1lbnQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRvd25sb2FkIEF0dGFjaG1lbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV07RmlsZUlEPVslIERhdGEuRmlsZUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBbJSBEYXRhLkZpbGVzaXplIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudEhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQojIFNob3cgaW5mbywgdGhhdCBsaW5rcyB3aXRoaW4gdGhlIGlmcmFtZSBtdXN0IGJlIGNsaWNrZWQgd2l0aCBzdHJnL2NtZC9zaGlmdCAoZGVwZW5kaW5nIG9uIHRoZSB1c2VkIGJyb3dzZXIgYW5kIG9zKQojIHRvIG9wZW4gdGhlIGxpbmtzIGluIGEgbmV3IHdpbmRvdyB3aXRob3V0IHRoZSBzZWN1cml0eSBwZXJtaXNzaW9ucyBnaXZlbiB0byB0aGUgaWZyYW1lCiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUU1lc3NhZ2VCcm93c2VyIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2xvc2UiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgbWVzc2FnZSIpIHwgaHRtbCAlXSIgaHJlZj0iIyI+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKERhdGEuQ2FwdGlvbikgfCBodG1sICVdOjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0idHJ1ZSIgbmFtZT0iRmllbGRTdGF0ZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRIVE1MIikgJV0KIyBleGVjdXRlIElGcmFtZSBKUyBhc3luY2hyb25vdXNseS4gT3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiBiZWZvcmUgb3VyIEFQSSB3YXMgbG9hZGVkCiMgdGhlIGZvbGxvd2luZyBKUyBjb2RlIG11c3QgYmUgd2l0aGluIHRoZSB0ZW1wbGF0ZSwgb3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiwgdGhhdCBhbHNvIHRoaXMgY29kZSBpdHNlbGYgaXMgbm90IGxvYWRlZCB5ZXQKPHNjcmlwdD4KZnVuY3Rpb24gQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpIHsKICAgIGlmICh0eXBlb2YgRkFRID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkN1c3RvbWVyID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkN1c3RvbWVyLkZBUVpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgRkFRLkN1c3RvbWVyLkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUJvZHkiPgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdIiBvbmxvYWQ9IndpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKXsgQ2hlY2tJRnJhbWVIZWlnaHQoJ0lmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdJyk7IH0sIDUwMCk7IiBzcmM9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV07RmllbGQ9WyUgRGF0YS5GaWVsZCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRIVE1MIikgJV0KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIENvcmUuQ29uZmlnLlNldCgnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0JywgcGFyc2VJbnQoIlslIENvbmZpZygiRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0IikgJV0iIHx8IDAsIDEwKSk7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0TWF4JywgcGFyc2VJbnQoIlslIENvbmZpZygiRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgiKSAlXSIgfHwgMCwgMTApKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29udGVudCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBpZD0iWm9vbVNpZGViYXIiPgogICAgICAgICAgICA8dWwgaWQ9Ik1ldGFkYXRhIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiRkFRIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkFydGljbGUgTnVtYmVyIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IktleXdvcmRzQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIktleXdvcmRzIikgfCBodG1sICVdOjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXl3b3JkIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCIpIHwgaHRtbCAlXTogWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9WyUgRGF0YS5LZXl3b3JkIHwgdXJpICVdIj5bJSBEYXRhLktleXdvcmQgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdPC9zcGFuPjwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KCiMgc2hvdyBmYXEgZHluYW1pYyBmaWVsZHMKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdSYXRpbmciKSAlXQogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkgUmF0aW5nTGFiZWwiPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdOjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhclRleHQiIHRpdGxlPSJbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3UmF0aW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBEYXRhLlZvdGVzIHwgaHRtbCAlXSI+WyUgRGF0YS5Wb3RlcyB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFWb3RpbmciKSAlXQogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZvdGluZ0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWb3RpbmdCb3ggVmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRkFRVm90aW5nIiBjbGFzcz0iRkFRVm90aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik1lc3NlbmdlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJWb3RpbmdRdWVzdGlvbiI+WyUgVHJhbnNsYXRlKCJIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEJlZm9yZSI+WyUgVHJhbnNsYXRlKCJub3QgaGVscGZ1bCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRVm90aW5nUmF0ZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSYXRlQnV0dG9uWyUgRGF0YS5WYWx1ZSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVCdXR0b24gUmF0ZVVuQ2hlY2tlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVZvdGluZ1JhdGVSb3ciKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEFmdGVyIj5bJSBUcmFuc2xhdGUoInZlcnkgaGVscGZ1bCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3cgVm90aW5nQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgIGlkPSJSYXRlU3VibWl0QnV0dG9uIiBjbGFzcz0iSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmF0ZSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRSYXRlIHwgaHRtbCAlXSJpZD0iUmF0ZVZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRVm90aW5nIikgJV0KCiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLypnbG9iYWwgRkFROiB0cnVlICovCkZBUS5DdXN0b21lci5GQVFab29tLkluaXQoKTsKCiQoJ2EuQXNQb3B1cCcpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICBDb3JlLlVJLlBvcHVwLk9wZW5Qb3B1cCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ1RpY2tldEFjdGlvbicpOwogICAgcmV0dXJuIGZhbHNlOwp9KTsKCiQoJy5SYXRlQnV0dG9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICQoJyNSYXRlVmFsdWUnKS52YWwoUmF0ZU51bWJlcik7CiAgICAkKCcjUmF0ZVN1Ym1pdEJ1dHRvbicpLmZhZGVJbigyNTApOwogICAgJCgnI0ZBUVZvdGluZycpLmZpbmQoJy5SYXRlQnV0dG9uJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgSXRlbVJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmF0dHIoJ2lkJykucmVwbGFjZSgvUmF0ZUJ1dHRvbi8sICcnKSwgMTApOwogICAgICAgIGlmICggSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlciApIHsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZUNoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlQ2hlY2tlZCcpOwogICAgICAgIH0KICAgIH0pOwp9KTsKPC9zY3JpcHQ+ClslIEVORCAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgRXhwbG9yZXIiKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgICAgIDxsaT5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsiKSAlXQogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIExhcmdlIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1aWNrU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoQmFja0xpbmsiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaEJhY2tMaW5rIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPjxzcGFuPlslIFRyYW5zbGF0ZSgiUXVpY2sgU2VhcmNoIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJXaWxkY2FyZHMgYXJlIGFsbG93ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGQVFTZWFyY2hCdXR0b24gU3BhY2luZ1RvcCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuQWN0aW9uIHwgdXJpICVdOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJBZHZhbmNlZCBTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVpY2tTZWFyY2giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDM+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iIGNsYXNzPSJSU1NJY29uIEFzQmxvY2siPjxpIGNsYXNzPSJmYSBmYS1yc3MiPjwvaT48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0uClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIChbJSBEYXRhLkNhdGVnb3J5TmFtZSB8IGh0bWwgJV0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlTaG9ydE5hbWUgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdIC0gWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIC0gWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1YmNhdGVnb3JpZXMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyIgc3VtbWFyeT0iRkFRIGNhdGVnb3JpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9DYXRlZ29yeURhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TdWJDYXRlZ29yeUNvdW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkFydGljbGVDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJjYXRlZ29yaWVzIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFJdGVtTGlzdCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJGQVEgQXJ0aWNsZXMiKSB8IGh0bWwgJV08L2gzPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUGFnaW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkZBUUlEU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9RkFRSUQ7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1UaXRsZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DYXRlZ29yeVNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07U29ydEJ5PUNhdGVnb3J5O09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuTGFuZ3VhZ2VTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1MYW5ndWFnZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRkFRRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGFydGljbGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkZBUUlEIHwgdXJpICVdO1pvb21CYWNrTGluaz1bJSBEYXRhLlpvb21CYWNrTGluayB8IHVyaSAlXTsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5IiB0aXRsZT0iWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdIj5bJSBEYXRhLkNhdGVnb3J5TmFtZSB8IHRydW5jYXRlKDQ1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiIHRpdGxlPSJbJSBEYXRhLkxhbmd1YWdlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYW5ndWFnZSB8IHRydW5jYXRlKDUpIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUGFnaW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFJdGVtTGlzdCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLyBtYWtlIHdob2xlIEZBUSBJdGVtIHJvdyBjbGlja2FibGUsIGJ1dCBub3QgdGhlIGhlYWRlcnMsIGNhbid0IHVzZSBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpCi8vIHNpbmNlIGl0IHVzZXMgInRhYmxlIHRyIiBhcyBzZWxlY3Rvciwgc2VlIGJ1ZyM5MzI5CiQoInRib2R5IHRyIikuY2xpY2soZnVuY3Rpb24oKXsKICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJCgiYSIsIHRoaXMpLmF0dHIoImhyZWYiKTsKICAgIHJldHVybiBmYWxzZTsKfSk7Cjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdIiB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIGlkPSJOdW1iZXIiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCoiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gXCJKb2huKm5cIiBvciBcIldpbGwqXCIpIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRnVsbFRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IkZ1bGxUZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJLZXl3b3JkIiBuYW1lPSJLZXl3b3JkIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWb3RlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyB2b3RlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1ZvdGVTZXQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UVm90ZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT1bJSBUcmFuc2xhdGUoIlNwZWNpZmljIHZvdGVzIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iVm90ZVBvaW50IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlZvdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZvdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSJbJSBEYXRhLlZvdGVTZWFyY2ggfCBodG1sICVdIiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSYXRlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyByYXRlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1JhdGVTZXQiIG5hbWU9IlJhdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgcmF0ZSIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlJhdGVQb2ludCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlJhdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRpbWUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVGltZVNldCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGUiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiAgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlIj5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGF0ZSByYW5nZSIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJEYXRlUmFuZ2UiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPlslIFRyYW5zbGF0ZSgiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0b3AgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIk91dHB1dCB0byIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0Rm9ybVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIlB1YmxpYyIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+WyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBDb25maWcoIkZyb250ZW5kOjpJbWFnZVBhdGgiKSAlXWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJhY2siKSAlXQogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLlNlYXJjaEJhY2tMaW5rIHwgaHRtbCAlXSIgY2xhc3M9Ikhpc3RvcnlCYWNrIj4mbGFycjsgWyUgVHJhbnNsYXRlKCJCYWNrIHRvIEZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQmFjayIpICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggUmVzdWx0cyBmb3IiKSB8IGh0bWwgJV06PC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoVGVybXMiKSAlXQogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlIHwgaHRtbCAlXTogWyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV0KIyBoaWRlIHJlbW92ZSBsaW5rLCBmdW5jdGlvbmFsaXR5IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKIyAgICAgICAgICAgICAgICA8YSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBTZWFyY2ggVGVybS4iKSB8IGh0bWwgJV0iIGhyZWY9IlslIERhdGEuU2VhcmNoVmFsdWUgJV0iPiZ0aW1lczs8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkZBUUlEU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7WyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXVNvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PVRpdGxlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DYXRlZ29yeVNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1slIERhdGEuUHJvZmlsZSB8IGh0bWwgJV1Tb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuTGFuZ3VhZ2VTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUNoYW5nZWQ7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkR5bmFtaWNGaWVsZCBbJSBEYXRhLkNTUyAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1Nob3dDbG9zZWRUaWNrZXRzPVslIERhdGEuU2hvd0Nsb3NlZCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGRhdGEgZm91bmQuIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5GQVFJRCB8IHVyaSAlXTtab29tQmFja0xpbms9WyUgRGF0YS5ab29tQmFja0xpbmsgfCB1cmkgJV07IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSIgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPlslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIj5bJSBEYXRhLkxhbmd1YWdlIHwgdHJ1bmNhdGUoNSkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiIHRpdGxlPSJbJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0iPlslIERhdGEuQ2hhbmdlZCB8IHRydW5jYXRlKDIwKSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRHluYW1pY0ZpZWxkIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3cgQmlnQnV0dG9ucyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQo8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcuTWFzdGVyQWN0aW9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Wm9vbSBBUklBUm9sZU1haW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQmFjayIpICVdCiAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV07WyUgRGF0YS5ab29tQmFja0xpbmsgfCBodG1sICVdIiBjbGFzcz0iSGlzdG9yeUJhY2siPiZsYXJyOyBbJSBUcmFuc2xhdGUoIkJhY2siKSB8IGh0bWwgJV08L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQmFjayIpICVdCgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iRkFRSGVhZGVyIj4KICAgICAgICAgICAgPGgyIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8dWwgaWQ9IkZBUU9wdGlvbnMiPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFQcmludDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1wcmludCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlByaW50IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgICAgIDxsaT5bJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoSXRlbUVsZW1lbnQiKSAlXQogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgPGxpIGNsYXNzPSJDdXN0b21lciBWaXNpYmxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudCIpIHwgaHRtbCAlXTo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBhcGVyY2xpcCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRG93bmxvYWRBdHRhY2htZW50IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEb3dubG9hZCBBdHRhY2htZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO0ZpbGVJRD1bJSBEYXRhLkZpbGVJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRIZWFkZXIiKSAlXQoKIyBTaG93IGluZm8sIHRoYXQgbGlua3Mgd2l0aGluIHRoZSBpZnJhbWUgbXVzdCBiZSBjbGlja2VkIHdpdGggc3RyZy9jbWQvc2hpZnQgKGRlcGVuZGluZyBvbiB0aGUgdXNlZCBicm93c2VyIGFuZCBvcykKIyB0byBvcGVuIHRoZSBsaW5rcyBpbiBhIG5ldyB3aW5kb3cgd2l0aG91dCB0aGUgc2VjdXJpdHkgcGVybWlzc2lvbnMgZ2l2ZW4gdG8gdGhlIGlmcmFtZQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFNZXNzYWdlQnJvd3NlciI+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50SFRNTCIpICVdCiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lci5GQVFab29tID09PSAnb2JqZWN0JykgewogICAgICAgIEZBUS5DdXN0b21lci5GQVFab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnIycgKyBJRnJhbWVJRCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCk7CiAgICAgICAgfSwgNTAwKTsKICAgIH0KfQo8L3NjcmlwdD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIEFwcGVuZCBzZXNzaW9uIGluZm8gdG8gVVJMIGJlY2F1c2UgSUUgd2lsbCBub3Qgc2VuZCBjb29raWVzLgojIFNldCAnYWxsb3ctcG9wdXBzJyB0byBhbGxvdyBJRTEwKyB0byBvcGVuIGxpbmtzLiByZWY6IGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvd2lraS9DaGFuZ2VQcm9wb3NhbHMvc2FuZGJveF9hbGxvd19wb3B1cHMKICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTtGaWVsZD1bJSBEYXRhLkZpZWxkIHwgaHRtbCAlXTsiPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50SFRNTCIpICVdClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIpICVdIiB8fCAwLCAxMCkpOwogICAgQ29yZS5Db25maWcuU2V0KCdGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCcsIHBhcnNlSW50KCJbJSBDb25maWcoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0TWF4IikgJV0iIHx8IDAsIDEwKSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgaWQ9Ilpvb21TaWRlYmFyIj4KICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkZBUSBJbmZvcm1hdGlvbiIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJBcnRpY2xlIE51bWJlciIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdPC9zcGFuPjwvbGk+CgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJLZXl3b3Jkc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L3NwYW4+ClslIFJlbmRlckJsb2NrU3RhcnQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQiKSB8IGh0bWwgJV06IFslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD1bJSBEYXRhLktleXdvcmQgfCB1cmkgJV0iPlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKIyBzaG93IGZhcSBkeW5hbWljIGZpZWxkcwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGQiKSAlXQojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiMgICAgICAgICAgICAgICAgPGxpPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUxIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KIyAgICAgICAgICAgICAgICA8L2xpPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgPGxpPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUyIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KIyAgICAgICAgICAgICAgICA8L2xpPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1JhdGluZyIpICVdCiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSBSYXRpbmdMYWJlbCI+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9zcGFuPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyVGV4dCIgdGl0bGU9IlslIERhdGEuU3RhcnMgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdSYXRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIERhdGEuVm90ZXMgfCBodG1sICVdIj5bJSBEYXRhLlZvdGVzIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkN1c3RvbWVyLkZBUVpvb20uSW5pdCgpOwoKJCgnYS5Bc1BvcHVwJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnVGlja2V0QWN0aW9uJyk7CiAgICByZXR1cm4gZmFsc2U7Cn0pOwo8L3NjcmlwdD4KWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgYmFzZSBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDU1YnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdGQVEgaW1wb3J0IHRvb2wuJyk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdzZXBhcmF0b3InLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmVzIHRoZSBzZXBhcmF0b3IgZm9yIGRhdGEgaW4gQ1NWIGZpbGUgKGRlZmF1bHQgJzsnKS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAncXVvdGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmVzIHRoZSBxdW90ZSBmb3IgZGF0YSBpbiBDU1YgZmlsZSAoZGVmYXVsdCAnXCInKS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZEFyZ3VtZW50KAogICAgICAgIE5hbWUgICAgICAgID0+ICdzb3VyY2UtcGF0aCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbmluZyBGQVEgaXRlbXMgZm9yIGltcG9ydGluZy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICAkU2VsZi0+QWRkaXRpb25hbEhlbHAoCiAgICAgICAgIjx5ZWxsb3c+Rm9ybWF0IG9mIHRoZSBDU1YgZmlsZTpcbgogICAgICAgICAgICB0aXRsZTtjYXRlZ29yeTtsYW5ndWFnZTtzdGF0ZXR5cGU7ZmllbGQxO2ZpZWxkMjtmaWVsZDM7ZmllbGQ0O2ZpZWxkNTtmaWVsZDY7a2V5d29yZHMKICAgICAgICA8L3llbGxvdz5cbiIKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNvdXJjZVBhdGggPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZS1wYXRoJyk7CiAgICBpZiAoICRTb3VyY2VQYXRoICYmICEtciAkU291cmNlUGF0aCApIHsKICAgICAgICBkaWUgIkZpbGUgJFNvdXJjZVBhdGggZG9lcyBub3QgZXhpc3QsIGNhbiBub3QgYmUgcmVhZC5cbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkltcG9ydGluZyBGQVEgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgIG15ICRTb3VyY2VQYXRoID0gJFNlbGYtPkdldEFyZ3VtZW50KCdzb3VyY2UtcGF0aCcpOwogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlJlYWQgRmlsZSAkU291cmNlUGF0aCA8L3llbGxvdz5cblxuIik7CgogICAgIyByZWFkIHNvdXJjZSBmaWxlCiAgICBteSAkQ1NWU3RyaW5nUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gJFNvdXJjZVBhdGgsCiAgICAgICAgUmVzdWx0ICAgPT4gJ1NDQUxBUicsCiAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgKTsKCiAgICBpZiAoICEkQ1NWU3RyaW5nUmVmICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCJDYW4ndCByZWFkIGZpbGUgJFNvdXJjZVBhdGguXG5JbXBvcnQgYWJvcnRlZC5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgIG15ICRTZXBhcmF0b3IgPSAkU2VsZi0+R2V0T3B0aW9uKCdzZXBhcmF0b3InKSB8fCAnOyc7CiAgICBteSAkUXVvdGUgICAgID0gJFNlbGYtPkdldE9wdGlvbigncXVvdGUnKSAgICAgfHwgJyInOwoKICAgICMgcmVhZCBDU1YgZGF0YQogICAgbXkgJERhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q1NWJyktPkNTVjJBcnJheSgKICAgICAgICBTdHJpbmcgICAgPT4gJCRDU1ZTdHJpbmdSZWYsCiAgICAgICAgU2VwYXJhdG9yID0+ICRTZXBhcmF0b3IsCiAgICAgICAgUXVvdGUgICAgID0+ICRRdW90ZSwKICAgICk7CgogICAgaWYgKCAhJERhdGFSZWYgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIkVycm9yIG9jY3VycmVkLiBJbXBvcnQgaW1wb3NzaWJsZSEgU2VlIFN5c2xvZyBmb3IgZGV0YWlscy5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgYWxsIEZBUSBsYW5ndWFnZSBpZHMKICAgIG15ICVMYW5ndWFnZUlEID0gcmV2ZXJzZSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGFsbCBzdGF0ZSB0eXBlIGlkcwogICAgbXkgJVN0YXRlVHlwZUlEID0gcmV2ZXJzZSAleyAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KCBVc2VySUQgPT4gMSApIH07CgogICAgIyBnZXQgZ3JvdXAgaWQgZm9yIEZBUSBncm91cAogICAgbXkgJEZBUUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJ2ZhcScsCiAgICApOwoKICAgIG15ICRMaW5lQ291bnRlcjsKICAgIG15ICRTdWNjZXNzQ291bnQgICAgPSAwOwogICAgbXkgJFVuU2N1Y2Nlc3NDb3VudCA9IDA7CgogICAgUk9XUkVGOgogICAgZm9yIG15ICRSb3dSZWYgKCBAeyREYXRhUmVmfSApIHsKCiAgICAgICAgJExpbmVDb3VudGVyKys7CgogICAgICAgIG15ICgKICAgICAgICAgICAgJFRpdGxlLCAkQ2F0ZWdvcnlTdHJpbmcsICRMYW5ndWFnZSwgJFN0YXRlVHlwZSwKICAgICAgICAgICAgJEZpZWxkMSwgJEZpZWxkMiwgJEZpZWxkMywgJEZpZWxkNCwgJEZpZWxkNSwgJEZpZWxkNiwgJEtleXdvcmRzCiAgICAgICAgKSA9IEB7JFJvd1JlZn07CgogICAgICAgICMgY2hlY2sgbGFuZ3VhZ2UKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRHskTGFuZ3VhZ2V9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuIExhbmd1YWdlICckTGFuZ3VhZ2UnIGRvZXMgbm90IGV4aXN0LlxuIik7CiAgICAgICAgICAgIG5leHQgUk9XUkVGOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBzdGF0ZSB0eXBlCiAgICAgICAgaWYgKCAhJFN0YXRlVHlwZUlEeyRTdGF0ZVR5cGV9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuIFN0YXRlICckU3RhdGVUeXBlJyBkb2VzIG5vdCBleGlzdC5cbiIpOwogICAgICAgICAgICBuZXh0IFJPV1JFRjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHN1YmNhdGVnb3JpZXMKICAgICAgICBteSBAQ2F0ZWdvcnlBcnJheSA9IHNwbGl0IC86Oi8sICRDYXRlZ29yeVN0cmluZzsKCiAgICAgICAgIyBjaGVjayBlYWNoIHN1YmNhdGVnb3J5IGlmIGl0IGV4aXN0cwogICAgICAgIG15ICRDYXRlZ29yeUlEOwogICAgICAgIG15ICRQYXJlbnRJRCA9IDA7CgogICAgICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5IChAQ2F0ZWdvcnlBcnJheSkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGNhdGVnb3J5IGlkCiAgICAgICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gZmFxX2NhdGVnb3J5ICcKICAgICAgICAgICAgICAgICAgICAuICdXSEVSRSB2YWxpZF9pZCA9IDEgQU5EIG5hbWUgPSA/IEFORCBwYXJlbnRfaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRDYXRlZ29yeSwgXCRQYXJlbnRJRCBdLAogICAgICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgQFJlc3VsdDsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICBwdXNoKCBAUmVzdWx0LCAkUm93WzBdICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkUmVzdWx0WzBdOwoKICAgICAgICAgICAgIyBjcmVhdGUgY2F0ZWdvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICRDYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnRJRCA9PiAkUGFyZW50SUQsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBuZXcgY2F0ZWdvcnkgdG8gRkFRIGdyb3VwCiAgICAgICAgICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEZBUUdyb3VwSURdLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG5ldyBwYXJlbnQgaWQKICAgICAgICAgICAgJFBhcmVudElEID0gJENhdGVnb3J5SUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGNhdGVnb3J5CiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKAogICAgICAgICAgICAgICAgIkVycm9yOiBDb3VsZCBub3QgaW1wb3J0IGxpbmUgJExpbmVDb3VudGVyLiBDYXRlZ29yeSAnJENhdGVnb3J5U3RyaW5nJyBjb3VsZCBub3QgYmUgY3JlYXRlZC5cbiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgU3RhdGVUeXBlIHRvIFN0YXRlCiAgICAgICAgbXkgJVN0YXRlTG9va3VwID0gcmV2ZXJzZSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoIFVzZXJJRCA9PiAxICk7CiAgICAgICAgbXkgJFN0YXRlSUQ7CgogICAgICAgIFNUQVRFTkFNRToKICAgICAgICBmb3IgbXkgJFN0YXRlTmFtZSAoIHNvcnQga2V5cyAlU3RhdGVMb29rdXAgKSB7CiAgICAgICAgICAgIGlmICggJFN0YXRlTmFtZSA9fiBte1xBICRTdGF0ZVR5cGUgfW1zeGkgKSB7CiAgICAgICAgICAgICAgICAkU3RhdGVJRCA9ICRTdGF0ZUxvb2t1cHskU3RhdGVOYW1lfTsKICAgICAgICAgICAgICAgIGxhc3QgU1RBVEVOQU1FOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgc2V0IGNvbnRlbnQgdHlwZQogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0JykgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKSApIHsKICAgICAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBGQVEgYXJ0aWNsZQogICAgICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+ICRMYW5ndWFnZUlEeyRMYW5ndWFnZX0sCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGaWVsZDEsCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGaWVsZDIsCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGaWVsZDMsCiAgICAgICAgICAgIEZpZWxkNCAgICAgID0+ICRGaWVsZDQsCiAgICAgICAgICAgIEZpZWxkNSAgICAgID0+ICRGaWVsZDUsCiAgICAgICAgICAgIEZpZWxkNiAgICAgID0+ICRGaWVsZDYsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICRLZXl3b3JkcyB8fCAnJywKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgc3VjY2VzcwogICAgICAgIGlmICgkRkFRSUQpIHsKICAgICAgICAgICAgJFN1Y2Nlc3NDb3VudCsrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFVuU2N1Y2Nlc3NDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJFN1Y2Nlc3NDb3VudCkgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3NmdWxseSBpbXBvcnRlZCAkU3VjY2Vzc0NvdW50IEZBUSBpdGVtKHMpLjwvZ3JlZW4+XG4iKTsKICAgIH0KICAgIGlmICgkVW5TY3VjY2Vzc0NvdW50KSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+VW5zdWNjZXNzZnVsbHkgaW1wb3J0ZWQgJFVuU2N1Y2Nlc3NDb3VudCBGQVEgaXRlbXMocykuPC9yZWQ+XG5cbiIpOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+SW1wb3J0IGNvbXBsZXRlIHdpdGggZXJyb3JzLjwvcmVkPlxuIik7CiAgICAgICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+RmFpbDwvcmVkPlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbiIpOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8eWVsbG93PiIgLiAoICc9JyB4IDY5ICkgLiAiPC95ZWxsb3c+XG4iICk7CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6RkFROjpDb250ZW50VHlwZVNldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBiYXNlIHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1NldHMgdGhlIGNvbnRlbnQgdHlwZSBvZiBGQVEgaXRlbXMuJyk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgPT4gJ2ZhcS1pdGVtLWlkJywKICAgICAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICAgICAic3BlY2lmeSBvbmUgb3IgbW9yZSBpZHMgb2YgZmFxIGl0ZW1zIHRvIHNldCBpdHMgY29udGVudCB0eXBlIChpZiBub3Qgc2V0LCBhbGwgRkFRIGl0ZW1zIHdpbGwgYmUgYWZmZWN0ZWQpLiIsCiAgICAgICAgUmVxdWlyZWQgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ID0+IHFyLy4qL3NteCwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY29udGVudC10eXBlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAidGV4dC9wbGFpbiBvciB0ZXh0L2h0bWwgKGlmIG5vdCBzZXQsIHRoZSBjb250ZW50IHR5cGUgd2lsbCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLyg/OiB0ZXh0XC9wbGFpbiB8IHRleHRcL2h0bWwgKS9zbXgsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5TZXR0aW5nIGNvbnRlbnQgdHlwZSBvZiBGQVEgaXRlbXMuLi48L3llbGxvdz5cbiIpOwoKICAgIG15IEBGQVFJdGVtSURzICA9IEB7ICRTZWxmLT5HZXRPcHRpb24oJ2ZhcS1pdGVtLWlkJykgLy8gW10gfTsKICAgIG15ICRDb250ZW50VHlwZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2NvbnRlbnQtdHlwZScpIC8vICcnOwoKICAgIG15ICVGdW5jdGlvblBhcmFtczsKCiAgICBpZiAoQEZBUUl0ZW1JRHMpIHsKICAgICAgICAkRnVuY3Rpb25QYXJhbXN7RkFRSXRlbUlEc30gPSBcQEZBUUl0ZW1JRHM7CiAgICB9CgogICAgaWYgKCRDb250ZW50VHlwZSkgewogICAgICAgICRGdW5jdGlvblBhcmFtc3tDb250ZW50VHlwZX0gPSAkQ29udGVudFR5cGU7CiAgICB9CgogICAgbXkgJFN1Y2NlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQ29udGVudFR5cGVTZXQoJUZ1bmN0aW9uUGFyYW1zKTsKCiAgICBpZiAoICEkU3VjY2VzICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5GYWlsLjwvcmVkPlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CgogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCiMgc3ViIFBvc3RSdW4gewojICAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwojCiMgICAgICMgVGhpcyB3aWxsIGJlIGNhbGxlZCBhZnRlciBSdW4oKSAoZXZlbiBpbiBjYXNlIG9mIGV4Y2VwdGlvbnMpLiBQZXJmb3JtIGFueSBjbGVhbnVwcyBoZXJlLgojCiMgICAgIHJldHVybjsKIyB9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBTY2FsYXI6OlV0aWw7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEKCj1oZWFkMSBTWU5PUFNJUwoKRkFRIG9iamVjdCBoYW5kbGVyIGZvciBEeW5hbWljRmllbGRzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWl0ZW0gbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OkZBUS0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUG9zdFZhbHVlU2V0KCkKCnBlcmZvcm0gc3BlY2lmaWMgZnVuY3Rpb25zIGFmdGVyIHRoZSBWYWx1ZSBzZXQgZm9yIHRoaXMgb2JqZWN0IHR5cGUuCgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkRkFRSGFuZGxlck9iamVjdC0+UG9zdFZhbHVlU2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIElEIG9mIHRoZSBjdXJyZW50IG9iamVjdCB0aGF0IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBsaW5rZWQgdG8sIGUuIGcuIEZBUUlECiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwgICAgICAgICAgICAgICAgICAgIyBWYWx1ZSB0byBzdG9yZSwgZGVwZW5kcyBvbiBiYWNrZW5kIHR5cGUKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQb3N0VmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KER5bmFtaWNGaWVsZENvbmZpZyBPYmplY3RJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBEeW5hbWljRmllbGRDb25maWcgKGdlbmVyYWwpCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBmaWVsZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoaW50ZXJuYWxseSkKICAgIGZvciBteSAkTmVlZGVkIChxdyhJRCBGaWVsZFR5cGUgT2JqZWN0VHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIER5bmFtaWNGaWVsZENvbmZpZyEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBoaXN0b3J5IGluc2VydAogICAgJEZBUU9iamVjdC0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gIkR5bmFtaWNGaWVsZCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9IFVwZGF0ZWQiLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjbGVhciBGQVEgY2FjaGUKICAgICRGQVFPYmplY3QtPl9EZWxldGVGcm9tRkFRQ2FjaGUoIEl0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9ICk7CgogICAgIyBUcmlnZ2VyIGV2ZW50LgogICAgJEZBUU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdGQVFEeW5hbWljRmllbGRVcGRhdGVfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBGaWVsZE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgICAgIE9sZFZhbHVlICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RkFROjpDYXRlZ29yeSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgRkFRIGNhdGVnb3J5IGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBDYXRlZ29yeUFkZCgpCgphZGQgYSBjYXRlZ29yeQoKICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5QScsCiAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsICAgICAjIE9wdGlvbmFsCiAgICAgICAgUGFyZW50SUQgPT4gMiwgICAgICAgICAgICAgICAgICAjIE1hbmRhdG9yeSwgYnV0IGNvdWxkIGJlIDAKICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJRCA9IDM0OyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgQ2F0ZWdvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQgVmFsaWRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFBhcmVudElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhhdCBQYXJlbnRJRCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIGJ1dCBudW1iZXIgMCBpcyBhbGxvd2VkCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gZXEgJycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJlbnRJRCBjYW5ub3QgYmUgZW1wdHkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGluc2VydCByZWNvcmQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfY2F0ZWdvcnkgKG5hbWUsIHBhcmVudF9pZCwgY29tbWVudHMsIHZhbGlkX2lkLCBjcmVhdGVkLCBjcmVhdGVkX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlZCwgY2hhbmdlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte0NvbW1lbnR9LCBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCBuZXcgY2F0ZWdvcnkgaWQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBuYW1lID0gPyBBTkQgcGFyZW50X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1BhcmVudElEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAkUm93WzBdOwogICAgfQoKICAgICMgbG9nIG5vdGljZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIkZBUUNhdGVnb3J5OiAnJFBhcmFte05hbWV9JyBDYXRlZ29yeUlEOiAnJENhdGVnb3J5SUQnICIKICAgICAgICAgICAgLiAiY3JlYXRlZCBzdWNjZXNzZnVsbHkgKCRQYXJhbXtVc2VySUR9KSEiLAogICAgKTsKCiAgICByZXR1cm4gJENhdGVnb3J5SUQ7Cn0KCj1pdGVtIENhdGVnb3J5Q291bnQoKQoKQ291bnQgdGhlIG51bWJlciBvZiBjYXRlZ29yaWVzLgoKICAgIG15ICRDYXRlZ29yeUNvdW50ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICBQYXJlbnRJRHMgPT4gWyAxLCAyLCAzLCA0IF0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlDb3VudCA9IDY7Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBQYXJlbnRJRHMhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIENPVU5UKCopCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnkKICAgICAgICBXSEVSRSB2YWxpZF9pZCBJTiAoJwogICAgICAgIC4gam9pbiAnLCAnLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKQogICAgICAgIC4gJyknOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmVudElELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1BhcmVudElEc30gfTsKCiAgICAgICAgJFNRTCAuPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBhZGQgZ3JvdXAgYnkKICAgICRTUUwgLj0gJyBHUk9VUCBCWSBwYXJlbnRfaWQnOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMjAwLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50Owp9Cgo9aXRlbSBDYXRlZ29yeURlbGV0ZSgpCgpEZWxldGUgYSBjYXRlZ29yeS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgIENhdGVnb3J5SUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBEZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBDYXRlZ29yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgdGhlIGNhdGVnb3J5IGdyb3VwcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDYXRlZ29yeUR1cGxpY2F0ZUNoZWNrKCkKCmNoZWNrIGEgY2F0ZWdvcnkgZm9yIGR1cGxpY2F0ZSBuYW1lIHVuZGVyIHRoZSBzYW1lIHBhcmVudAoKICAgIG15ICRFeGlzdHMgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUR1cGxpY2F0ZUNoZWNrKAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdTb21lIE5hbWUnLAogICAgICAgIFBhcmVudElEICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRXhpc3RzID0gMTsgICAgICAgICAgICAgICAgIyBpZiBjYXRlZ29yeSBuYW1lIGFscmVhZHkgZXhpc3RzIHdpdGggdGhlIHNhbWUgcGFyZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGlmIHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0cyB3aXRoIHRoZSBzYW1lIHBhcmVudAoKPWN1dAoKc3ViIENhdGVnb3J5RHVwbGljYXRlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0cwogICAgJFBhcmFte05hbWV9IC8vPSAnJzsKICAgICRQYXJhbXtQYXJlbnRJRH0gfHw9IDA7CiAgICBteSBAVmFsdWVzOwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte05hbWV9OwogICAgcHVzaCBAVmFsdWVzLCBcJFBhcmFte1BhcmVudElEfTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGIgcXVvdGUKICAgICRQYXJhbXtQYXJlbnRJRH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17UGFyZW50SUR9LCAnSW50ZWdlcicgKTsKCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIG5hbWUgPSA/CiAgICAgICAgICAgIEFORCBwYXJlbnRfaWQgPSA/CiAgICAgICAgJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCBpZCAhPSA/IjsKICAgICAgICBwdXNoIEBWYWx1ZXMsIFwkUGFyYW17Q2F0ZWdvcnlJRH07CgogICAgfQoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAVmFsdWVzLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRFeGlzdHMgPSAxOwogICAgfQoKICAgIHJldHVybiAkRXhpc3RzOwp9Cgo9aXRlbSBDYXRlZ29yeUdldCgpCgpnZXQgYSBjYXRlZ29yeSBhcyBoYXNoCgogICAgbXkgJUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVDYXRlZ29yeSA9ICgsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMCwKICAgICAgICBOYW1lICAgICAgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgQ29tbWVudCAgICA9PiAnVGhpcyBpcyBteSBmaXJzdCBjYXRlZ29yeS4nLAogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENhdGVnb3J5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0NhdGVnb3J5R2V0OjonIC4gJFBhcmFte0NhdGVnb3J5SUR9OwoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBwYXJlbnRfaWQsIG5hbWUsIGNvbW1lbnRzLCB2YWxpZF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJFJvd1szXSwKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAkUm93WzRdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDI0ICogMiwKICAgICk7CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aXRlbSBDYXRlZ29yeUdyb3VwR2V0KCkKCmdldCBncm91cHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRHcm91cEFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEdyb3VwQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgICAgICA5LAogICAgICAgIDEwLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeUdyb3VwR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIG15IEBHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBHcm91cHMsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAR3JvdXBzOwp9Cgo9aXRlbSBDYXRlZ29yeUdyb3VwR2V0QWxsKCkKCmdldCBhbGwgY2F0ZWdvcnktZ3JvdXBzCgogICAgbXkgJEFsbENhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBbGxDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgMyA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgICAgICA0ID0+IHsKICAgICAgICAgICAgMSAgPT4gMSwKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgMyAgPT4gMSwKICAgICAgICAgICAgNCAgPT4gMSwKICAgICAgICAgICAgNSAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeUdyb3VwR2V0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5R3JvdXBHZXRBbGx9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGdyb3VwcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGdyb3VwX2lkLCBjYXRlZ29yeV9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCcsCiAgICApOwoKICAgIG15ICVHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkR3JvdXBzeyAkUm93WzFdIH0tPnsgJFJvd1swXSB9ID0gMTsKICAgIH0KCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5R3JvdXBHZXRBbGx9ID0gXCVHcm91cHM7CgogICAgcmV0dXJuIFwlR3JvdXBzOwp9Cgo9aXRlbSBDYXRlZ29yeUxpc3QoKQoKZ2V0IHRoZSBjYXRlZ29yeSBsaXN0IGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlIYXNoUmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SGFzaFJlZiA9IHsKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0CiAgICBteSAkVmFsaWQgPSAwOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFZhbGlkID0gJFBhcmFte1ZhbGlkfTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57Q2F0ZWdvcnlMaXN0fS0+eyRWYWxpZH0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9OwogICAgfQoKICAgICMgYnVpbGQgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZCwgcGFyZW50X2lkLCBuYW1lCiAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnknOwogICAgaWYgKCRWYWxpZCkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgJFNRTCAuPSAnIFdIRVJFIHZhbGlkX2lkIElOICgnCiAgICAgICAgICAgIC4gam9pbiAnLCAnLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKQogICAgICAgICAgICAuICcpJzsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgfQoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q2F0ZWdvcnlMaXN0fS0+eyRWYWxpZH0gPSBcJURhdGE7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYW4gYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U2VhcmNoKAogICAgICAgIE5hbWUgICAgICAgID0+ICdUZXN0JywKICAgICAgICBQYXJlbnRJRCAgICA9PiAzLAogICAgICAgIFBhcmVudElEcyAgID0+IFsgMSwgMywgOCBdLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMiwgNSwgNyBdLAogICAgICAgIE9yZGVyQnkgICAgID0+ICdOYW1lJywKICAgICAgICBTb3J0QnkgICAgICA9PiAnZG93bicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIHZhbGlkX2lkIElOICgnCiAgICAgICAgLiBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpCiAgICAgICAgLiAnKSc7CgogICAgbXkgJEV4dCA9ICcnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgZGIgbGlrZSBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOYW1lfSwgJ0xpa2UnICk7CgogICAgICAgICRFeHQgLj0gIiBBTkQgbmFtZSBMSUtFICclIiAuICRQYXJhbXtOYW1lfSAuICIlJyAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgcGFyZW50IGlkCiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKCiAgICAgICAgIyBkYiBpbnRlZ2VyIHF1b3RlCiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICAgICAkRXh0IC49ICcgQU5EIHBhcmVudF9pZCA9ICcgLiAkUGFyYW17UGFyZW50SUR9OwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWRzCiAgICBlbHNpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17UGFyZW50SURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte1BhcmVudElEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBwYXJlbnQgaWRzCiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0gKSB7CiAgICAgICAgICAgICRQYXJlbnRJRCA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJlbnRJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3J5IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICREQk9iamVjdC0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAkRXh0ID0gJyBBTkQgaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBPUkRFUiBCWQogICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gKSB7CiAgICAgICAgJEV4dCAuPSAiIE9SREVSIEJZIG5hbWUiOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IG9yZGVyCiAgICAgICAgJFBhcmFte1NvcnRCeX0gfHw9ICd1cCc7CgogICAgICAgICMgU09SVAogICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gZXEgJ3VwJyApIHsKICAgICAgICAgICAgICAgICRFeHQgLj0gIiBBU0MiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte1NvcnRCeX0gZXEgJ2Rvd24nICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAiIERFU0MiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMIFNUQVRFTUVOVAogICAgJFNRTCAuPSAkRXh0OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gNTAwLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxATGlzdDsKfQoKPWl0ZW0gQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgpCgpnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBvZiBhIGNhdGVnb3J5CgogICAgbXkgJFN1YkNhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgUGFyZW50SUQgICAgID0+IDEsCiAgICAgICAgTW9kZSAgICAgICAgID0+ICdQdWJsaWMnLCAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3R0JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMywKICAgICAgICA0LAogICAgICAgIDUsCiAgICAgICAgNiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFBhcmVudElEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDYXRlZ29yaWVzID0ge307CgogICAgaWYgKCAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdBZ2VudCcgKSB7CgogICAgICAgICMgZ2V0IGFnZW50cyBjYXRlZ29yaWVzCiAgICAgICAgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICkgewoKICAgICAgICAjIGdldCBjdXN0b21lciBjYXRlZ29yaWVzCiAgICAgICAgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBhbGwgY2F0ZWdvcmllcwogICAgICAgICRDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCgKICAgICAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBTdWJDYXRlZ29yeUlEczsKICAgIG15IEBUZW1wU3ViQ2F0ZWdvcnlJRHMgPSBrZXlzICV7ICRDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgU1VCQ0FURUdPUllJRDoKICAgIHdoaWxlIChAVGVtcFN1YkNhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IG5leHQgc3ViY2F0ZWdvcnkgaWQKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRCA9IHNoaWZ0IEBUZW1wU3ViQ2F0ZWdvcnlJRHM7CgogICAgICAgICMgYWRkIHRvIHJlc3VsdAogICAgICAgIHB1c2ggQFN1YkNhdGVnb3J5SURzLCAkU3ViQ2F0ZWdvcnlJRDsKCiAgICAgICAgIyBjaGVjayBpZiBzdWJjYXRlZ29yeSBoYXMgb3duIHN1YmNhdGVnb3JpZXMKICAgICAgICBuZXh0IFNVQkNBVEVHT1JZSUQgaWYgISRDYXRlZ29yaWVzLT57JFN1YkNhdGVnb3J5SUR9OwoKICAgICAgICAjIGFkZCBuZXcgc3ViY2F0ZWdvcmllcwogICAgICAgIHB1c2ggQFRlbXBTdWJDYXRlZ29yeUlEcywga2V5cyAleyAkQ2F0ZWdvcmllcy0+eyRTdWJDYXRlZ29yeUlEfSB9OwogICAgfQoKICAgICMgc29ydCBzdWJjYXRlZ29yaWVzIG51bWVyaWNhbGx5CiAgICBAU3ViQ2F0ZWdvcnlJRHMgPSBzb3J0IHsgJGEgPD0+ICRiIH0gQFN1YkNhdGVnb3J5SURzOwoKICAgIHJldHVybiBcQFN1YkNhdGVnb3J5SURzOwp9Cgo9aXRlbSBDYXRlZ29yeVRyZWVMaXN0KCkKCmdldCBhbGwgY2F0ZWdvcmllcyBhcyB0cmVlICh3aXRoIHRoZWlyIGxvbmcgbmFtZXMpCgogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsICAjICgwfDEsIG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5VHJlZSA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEInLAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeVRyZWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIGlmICggJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57R2V0Q2F0ZWdvcnlUcmVlfS0+eyRWYWxpZH07CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkLCBwYXJlbnRfaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeSc7CgogICAgIyBhZGQgd2hlcmUgY2xhdXNlIGZvciB2YWxpZCBjYXRlZ29yaWVzCiAgICBpZiAoJFZhbGlkKSB7CiAgICAgICAgJFNRTCAuPSAnIFdIRVJFIHZhbGlkX2lkIElOICgnCiAgICAgICAgICAgIC4gam9pbiAnLCAnLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKQogICAgICAgICAgICAuICcpJzsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICAjIGZldGNoIHJlc3VsdAogICAgbXkgJUNhdGVnb3J5TWFwOwogICAgbXkgJUNhdGVnb3J5TmFtZUxvb2t1cDsKICAgIG15ICVQYXJlbnRJRExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDYXRlZ29yeU1hcHsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICAgICAgJENhdGVnb3J5TmFtZUxvb2t1cHsgJFJvd1swXSB9ICAgICAgID0gJFJvd1syXTsKICAgICAgICAkUGFyZW50SURMb29rdXB7ICRSb3dbMF0gfSAgICAgICAgICAgPSAkUm93WzFdOwogICAgfQoKICAgICMgdG8gc3RvcmUgdGhlIGNhdGVnb3J5IHRyZWUKICAgIG15ICVDYXRlZ29yeVRyZWU7CgogICAgIyBjaGVjayBhbGwgcGFyZW50IElEcwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICVDYXRlZ29yeU1hcCApIHsKCiAgICAgICAgIyBnZXQgc3ViY2F0ZWdvcmllcyBhbmQgbmFtZXMgZm9yIHRoaXMgcGFyZW50IGlkCiAgICAgICAgd2hpbGUgKCBteSAoICRDYXRlZ29yeUlELCAkQ2F0ZWdvcnlOYW1lICkgPSBlYWNoICV7ICRDYXRlZ29yeU1hcHskUGFyZW50SUR9IH0gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgcGFyZW50cyBuYW1lCiAgICAgICAgICAgIG15ICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRDsKICAgICAgICAgICAgd2hpbGUgKCROZXdQYXJlbnRJRCkgewoKICAgICAgICAgICAgICAgICMgcHJlLWFwcGVuZCBwYXJlbnRzIGNhdGVnb3J5IG5hbWUKICAgICAgICAgICAgICAgIGlmICggJENhdGVnb3J5TmFtZUxvb2t1cHskTmV3UGFyZW50SUR9ICkgewogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeU5hbWUgPSAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gLiAnOjonIC4gJENhdGVnb3J5TmFtZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB1cCBvbmUgcGFyZW50IGxldmVsCiAgICAgICAgICAgICAgICAkTmV3UGFyZW50SUQgPSAkUGFyZW50SURMb29rdXB7JE5ld1BhcmVudElEfSB8fCAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBjYXRlZ29yeSB0byB0cmVlCiAgICAgICAgICAgICRDYXRlZ29yeVRyZWV7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5TmFtZTsKICAgICAgICB9CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSA9IFwlQ2F0ZWdvcnlUcmVlOwoKICAgIHJldHVybiBcJUNhdGVnb3J5VHJlZTsKfQoKPWl0ZW0gQ2F0ZWdvcnlVcGRhdGUoKQoKdXBkYXRlIGEgY2F0ZWdvcnkKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VXBkYXRlKAogICAgICAgIENhdGVnb3J5SUQgPT4gMiwKICAgICAgICBQYXJlbnRJRCAgID0+IDEsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU29tZSBDYXRlZ29yeScsCiAgICAgICAgQ29tbWVudCAgICA9PiAnc29tZSBjb21tZW50JywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2F0ZWdvcnkgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBDYXRlZ29yeVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFBhcmVudElEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoYXQgUGFyZW50SUQgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBidXQgbnVtYmVyIDAgaXMgYWxsb3dlZAogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9IGVxICcnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyZW50SUQgY2Fubm90IGJlIGVtcHR5ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFNFVCBwYXJlbnRfaWQgPSA/LCBuYW1lID0gPywgY29tbWVudHMgPSA/LCB2YWxpZF9pZCA9ID8sIGNoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZWRfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte05hbWV9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCAgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBsb2cgbm90aWNlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nICIKICAgICAgICAgICAgLiAiSUQ6ICckUGFyYW17Q2F0ZWdvcnlJRH0nIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5ICgkUGFyYW17VXNlcklEfSkhIiwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQWdlbnRDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBhcnJheSByZWYKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICBQYXJlbnRJRCA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQWdlbnRDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENhdGVnb3JpZXMpOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlJRHM7Cn0KCj1pdGVtIEN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBAeyRGQVFPYmplY3QtPkN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgQ3VzdG9tZXJVc2VyICA9PiAndHQnLAogICAgICAgIFBhcmVudElEICAgICAgPT4gMywgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApfTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAnNCcsCiAgICAgICAgJzgnLAogICAgXTsKCj1jdXQKCnN1YiBDdXN0b21lckNhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBNb2RlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBteSAkUGFyZW50SUQgPSAkUGFyYW17UGFyZW50SUR9ID8gJFBhcmFte1BhcmVudElEfSA6IDA7CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKICAgIG15ICVBcnRpY2xlczsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaDo6QXJ0aWNsZXMnOwogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gKSB7CiAgICAgICAgJUFydGljbGVzID0gJXsgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgICAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBTRUxFQ1QgZmFxX2l0ZW0uaWQsIGZhcV9pdGVtLmNhdGVnb3J5X2lkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlX3R5cGUubmFtZSAhPSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAkU1FMLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRBcnRpY2xlc3sgJFJvd1sxXSB9Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ID0gXCVBcnRpY2xlczsKICAgIH0KCiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEcykgewoKICAgICAgICAjIGdldCBhbGwgc3ViY2F0ZWdvcnkgaWRzIGZvciB0aGlzIGNhdGVnb3J5CiAgICAgICAgbXkgJFN1YkNhdGVnb3J5SURzID0gJFNlbGYtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhpcyBjYXRlZ29yeSBpZAogICAgICAgIG15IEBJRHMgPSAoICRDYXRlZ29yeUlELCBAeyRTdWJDYXRlZ29yeUlEc30gKTsKCiAgICAgICAgIyBjaGVjayBpZiBjYXRlZ29yeSBjb250YWlucyBhcnRpY2xlcyB3aXRoIHN0YXRlIGV4dGVybmFsIG9yIHB1YmxpYwogICAgICAgIElEOgogICAgICAgIGZvciBteSAkSUQgKEBJRHMpIHsKICAgICAgICAgICAgbmV4dCBJRCBpZiAhJEFydGljbGVzeyRJRH07CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJElEOwogICAgICAgICAgICBsYXN0IElEIGlmIGRlZmluZWQgJFBhcmFte1BhcmVudElEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFxAQWxsb3dlZENhdGVnb3J5SURzOwp9Cgo9aXRlbSBQdWJsaWNDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBoYXNoCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPlB1YmxpY0NhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEICAgICAgPT4gMywgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICAnNCcsCiAgICAgICAgJzgnLAogICAgXTsKCj1jdXQKCnN1YiBQdWJsaWNDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhNb2RlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkUGFyYW17UGFyZW50SUR9ID0gMDsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gW10gaWYgISRDYXRlZ29yeUxpc3RDYXRlZ29yaWVzLT57ICRQYXJhbXtQYXJlbnRJRH0gfTsKCiAgICBteSAlQ2F0ZWdvcnkgICAgPSAleyAkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH0gfTsKICAgIG15IEBDYXRlZ29yeUlEcyA9IHNvcnQgeyAkQ2F0ZWdvcnl7JGF9IGNtcCAkQ2F0ZWdvcnl7JGJ9IH0gKCBrZXlzICVDYXRlZ29yeSApOwogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKCiAgICAjIGJ1aWxkIHZhbGlkIGlkIHN0cmluZwogICAgbXkgJFZhbGlkSURzU3RyaW5nID0gam9pbiAnLCAnLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGlzIGNhdGVnb3J5IGlkCiAgICAgICAgbXkgQElEcyA9ICggJENhdGVnb3J5SUQsIEB7JFN1YkNhdGVnb3J5SURzfSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNhdGVnb3J5IGNvbnRhaW5zIGFydGljbGVzIHdpdGggc3RhdGUgcHVibGljCiAgICAgICAgbXkgJEZvdW5kQXJ0aWNsZSA9IDA7CgogICAgICAgIG15ICRTUUwgPSAiCiAgICAgICAgICAgIFNFTEVDVCBmYXFfaXRlbS5pZAogICAgICAgICAgICBGUk9NIGZhcV9pdGVtLCBmYXFfc3RhdGVfdHlwZSwgZmFxX3N0YXRlCiAgICAgICAgICAgIFdIRVJFIGZhcV9pdGVtLmNhdGVnb3J5X2lkID0gPwogICAgICAgICAgICAgICAgQU5EIGZhcV9pdGVtLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlX3R5cGUubmFtZSA9ICdwdWJsaWMnCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0uYXBwcm92ZWQgPSAxIjsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewoKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJElEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRGb3VuZEFydGljbGUgPSAkUm93WzBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgSUQgaWYgJEZvdW5kQXJ0aWNsZTsKICAgICAgICB9CgogICAgICAgICMgYW4gYXJ0aWNsZSB3YXMgZm91bmQKICAgICAgICBpZiAoJEZvdW5kQXJ0aWNsZSkgewogICAgICAgICAgICBwdXNoIEBBbGxvd2VkQ2F0ZWdvcnlJRHMsICRDYXRlZ29yeUlEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXEBBbGxvd2VkQ2F0ZWdvcnlJRHM7Cgp9Cgo9aXRlbSBHZXRVc2VyQ2F0ZWdvcmllcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4ge30sCiAgICAgICAgMCA9PiB7CiAgICAgICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMyA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICA0ID0+ICdTdWIgQ2F0ZWdvcnkgQicsCiAgICAgICAgfSwKICAgICAgICAzID0+IHt9LAogICAgICAgIDQgPT4ge30sCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJENhdGVnb3J5R3JvdXBzID0gJFNlbGYtPkNhdGVnb3J5R3JvdXBHZXRBbGwoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlVXNlckdyb3VwcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICk7CgogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cHMsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gXCVVc2VyR3JvdXBzLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gJFVzZXJDYXRlZ29yaWVzOwp9Cgo9aXRlbSBHZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSB1c2VyIGNhdGVnb3JpZXMgd2l0aCB0aGVpciBsb25nIG5hbWVzCiAgICBteSAlVXNlckNhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskVXNlckNhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgcmVmICRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfSApIHsKICAgICAgICAgICAgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzeyRDYXRlZ29yeUlEfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJVVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aXRlbSBHZXRDdXN0b21lckNhdGVnb3JpZXMoKQoKZ2V0IGN1c3RvbWVyIHVzZXIgY2F0ZWdvcmllcwoKICAgIG15ICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdoYW5zJywKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7fSwKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgICAgIDMgPT4ge30sCiAgICAgICAgNCA9PiB7fSwKICAgIH07Cgo9Y3V0CgpzdWIgR2V0Q3VzdG9tZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdHZXRDdXN0b21lckNhdGVnb3JpZXM6OkN1c3RvbWVyVXNlcjo6JyAuICRQYXJhbXtDdXN0b21lclVzZXJ9OwogICAgaWYgKCBkZWZpbmVkICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9OwogICAgfQoKICAgICMgZ2V0IGFsbCB2YWxpZCBjYXRlZ29yaWVzCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcnlHcm91cHMgPSAkU2VsZi0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVVc2VyR3JvdXBzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAkQ3VzdG9tZXJDYXRlZ29yaWVzID0gJFNlbGYtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcmllcywKICAgICAgICBDYXRlZ29yeUdyb3VwcyA9PiAkQ2F0ZWdvcnlHcm91cHMsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gXCVVc2VyR3JvdXBzLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gPSAkQ3VzdG9tZXJDYXRlZ29yaWVzOwoKICAgIHJldHVybiAkQ3VzdG9tZXJDYXRlZ29yaWVzOwp9Cgo9aXRlbSBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoKQoKZ2V0IGN1c3RvbWVyIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRDdXN0b21lckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnaGFucycsCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ3VzdG9tZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgfTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIG15ICRDdXN0b21lckNhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBleHRyYWN0IGNhdGVnb3J5IGlkcwogICAgbXkgJUFsbENhdGVnb3J5SURzOwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQWxsQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGN1c3RvbWVyIGNhdGVnb3J5IGlkcwogICAgbXkgQEN1c3RvbWVyQ2F0ZWdvcnlJRHM7CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCAwLCBrZXlzICVBbGxDYXRlZ29yeUlEcyApIHsKICAgICAgICBwdXNoIEBDdXN0b21lckNhdGVnb3J5SURzLCBAewogICAgICAgICAgICAkU2VsZi0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGJ1aWxkIGN1c3RvbWVyIGNhdGVnb3J5IGhhc2gKICAgICRDdXN0b21lckNhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQEN1c3RvbWVyQ2F0ZWdvcnlJRHMpIHsKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57ICRDYXRlZ29yeXtQYXJlbnRJRH0gfS0+eyAkQ2F0ZWdvcnl7Q2F0ZWdvcnlJRH0gfSA9ICRDYXRlZ29yeXtOYW1lfTsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskQ3VzdG9tZXJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH07CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzeyRDYXRlZ29yeUlEfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lczsKfQoKPWl0ZW0gR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgcHVibGljIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRQdWJsaWNDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUHVibGljQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzCiAgICBteSAkUHVibGljQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSApOwoKICAgICMgZXh0cmFjdCBjYXRlZ29yeSBpZHMKICAgIG15ICVBbGxDYXRlZ29yeUlEczsKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskUHVibGljQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkQWxsQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIHB1YmxpYyBjYXRlZ29yeSBpZHMKICAgIG15IEBQdWJsaWNDYXRlZ29yeUlEczsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5SURzLCBAewogICAgICAgICAgICAkU2VsZi0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIE1vZGUgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICkKICAgICAgICB9OwogICAgfQoKICAgICMgYnVpbGQgcHVibGljIGNhdGVnb3J5IGhhc2gKICAgICRQdWJsaWNDYXRlZ29yaWVzID0ge307CiAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBQdWJsaWNDYXRlZ29yeUlEcykgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRQdWJsaWNDYXRlZ29yaWVzLT57ICRDYXRlZ29yeXtQYXJlbnRJRH0gfS0+eyAkQ2F0ZWdvcnl7Q2F0ZWdvcnlJRH0gfSA9ICRDYXRlZ29yeXtOYW1lfTsKICAgIH0KCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzOwoKICAgICMgZ2V0IHRoZSBsb25nIG5hbWVzIG9mIHRoZSBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JFB1YmxpY0NhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IG5lICdIQVNIJzsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEleyAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkUHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lc3skQ2F0ZWdvcnlJRH0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aXRlbSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKQoKZ2V0IHVzZXIgcGVybWlzc2lvbiBmb3IgYSBjYXRlZ29yeQoKICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIENhdGVnb3J5SUQgPT4gJzEyMycsCiAgICAgICAgVHlwZSAgICAgICA9PiAncncnLCAgICAgIyAob3B0aW9uYWwpIHJ3IG9yIHJvLCBkZWZhdWx0IHJvCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFBlcm1pc3Npb25TdHJpbmcgPSAncncnOyAgICAgICAgICAgICAgICMgb3IgJ3JvJyBvciAnJwoKPWN1dAoKc3ViIENoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAkUGFyYW17VHlwZX0gPSAncm8nOwogICAgfQoKICAgICRQYXJhbXtUeXBlfSA9IGxjICRQYXJhbXtUeXBlfTsKCiAgICBpZiAoICRQYXJhbXtUeXBlfSBuZSAncncnICYmICRQYXJhbXtUeXBlfSBuZSAncm8nICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVHlwZSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkU2VsZi0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskVXNlckNhdGVnb3JpZXN9ICkgewogICAgICAgIG15ICRDYXRlZ29yaWVzID0gJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgIGlmICggJENhdGVnb3J5SUQgPT0gJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgICAgIHJldHVybiAkUGFyYW17VHlwZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKCkKCmdldCBjdXN0b21lciB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnbW0nLAogICAgICAgIENhdGVnb3J5SUQgICA9PiAnMTIzJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBDYXRlZ29yeUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkUGVybWlzc2lvbiAocXcocncgcm8pKSB7CiAgICAgICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskQ3VzdG9tZXJDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgbXkgJENhdGVnb3JpZXMgPSAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7JENhdGVnb3JpZXN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlJRCA9PSAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkUGVybWlzc2lvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1pdGVtIFNldENhdGVnb3J5R3JvdXAoKQoKc2V0IGdyb3VwcyB0byBhIGNhdGVnb3J5CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgIENhdGVnb3J5SUQgPT4gMywKICAgICAgICBHcm91cElEcyAgID0+IFsgMiw0LDEsNSw3NyBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGdyb3VwcyBjb3VsZCBub3QgYmUgc2V0IHRvIGEgY2F0ZWdvcnkKCj1jdXQKCnN1YiBTZXRDYXRlZ29yeUdyb3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgR3JvdXBJRHMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRlbGV0ZSBvbGQgZ3JvdXBzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwCiAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgZ3JvdXBzCiAgICAkUGFyYW17Q2F0ZWdvcnlJRH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgZm9yIG15ICRHcm91cElEICggQHsgJFBhcmFte0dyb3VwSURzfSB9ICkgewoKICAgICAgICAjIGRiIHF1b3RlCiAgICAgICAgJEdyb3VwSUQgPSAkREJPYmplY3QtPlF1b3RlKCAkR3JvdXBJRCwgJ0ludGVnZXInICk7CgogICAgICAgIG15ICRTUUwgPSAiCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeV9ncm91cCAoY2F0ZWdvcnlfaWQsIGdyb3VwX2lkLCBjaGFuZ2VkLCBjaGFuZ2VkX2J5LCBjcmVhdGVkLAogICAgICAgICAgICAgICAgY3JlYXRlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICgkUGFyYW17Q2F0ZWdvcnlJRH0sICRHcm91cElELCBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0pIjsKCiAgICAgICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKCBTUUwgPT4gJFNRTCApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aXRlbSBfVXNlckNhdGVnb3JpZXMoKQoKcmVkdWNlcyB0aGUgY2F0ZWdvcmllcyAoIGZyb20gQ2F0ZWdvcnlMaXN0KCkgKSB0byBvbmx5IHRoZSBvbmVzIHdoZXJlIHRoZSB1c2VyIGhhcyBwcml2aWxlZ2VzLgoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcnlIYXNoUmVmLCAgICAgICAgICMgYXMgcmV0dXJuZWQgZm9ybSBDYXRlZ29yeUxpc3QoKQogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwSGFzaFJlZiwgICAgICMgYXMgcmV0dXJuZWQgZnJvbSBDYXRlZ29yeUdyb3VwR2V0QWxsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gJFVzZXJHcm91cHNIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvaWVzID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfVXNlckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcmllcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlVXNlckNhdGVnb3JpZXM7CgogICAgUEFSRU5USUQ6CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0NhdGVnb3JpZXN9IH0gKSB7CgogICAgICAgIG15ICVTdWJDYXRlZ29yaWVzOwoKICAgICAgICBDQVRFR09SWUlEOgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30tPnskUGFyZW50SUR9IH0gKSB7CgogICAgICAgICAgICAjIGNoZWNrIGNhdGVnb3J5IGdyb3VwcwogICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5R3JvdXBzfS0+eyRDYXRlZ29yeUlEfTsKCiAgICAgICAgICAgICMgY2hlY2sgdXNlciBncm91cHMKICAgICAgICAgICAgR1JPVVBJRDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggc29ydCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUdyb3Vwc30tPnskQ2F0ZWdvcnlJRH0gfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IEdST1VQSUQgaWYgIWRlZmluZWQgJFBhcmFte1VzZXJHcm91cHN9LT57JEdyb3VwSUR9OwoKICAgICAgICAgICAgICAgICMgYWRkIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkU3ViQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gPSAkUGFyYW17Q2F0ZWdvcmllc30tPnskUGFyZW50SUR9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgICAgICMgYWRkIGVtcHR5IGhhc2ggaWYgY2F0ZWdvcnkgaGFzIG5vIHN1YmNhdGVnb3JpZXMKICAgICAgICAgICAgICAgIGlmICggISRVc2VyQ2F0ZWdvcmllc3skQ2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFVzZXJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSA9IHt9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3QgR1JPVVBJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkVXNlckNhdGVnb3JpZXN7JFBhcmVudElEfSA9IFwlU3ViQ2F0ZWdvcmllczsKICAgIH0KCiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllczsKfQoKPWVuZCBJbnRlcm5hbDoKCj1jdXQKCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBGQVEgbGFuZ3VhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIExhbmd1YWdlQWRkKCkKCmFkZCBhIGxhbmd1YWdlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUFkZCgKICAgICAgICBOYW1lICAgPT4gJ1NvbWUgTGFuZ3VhZ2UnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgTGFuZ3VhZ2VBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfbGFuZ3VhZ2UgKG5hbWUpCiAgICAgICAgICAgIFZBTFVFUyAoPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBMYW5ndWFnZURlbGV0ZSgpCgpEZWxldGUgYSBsYW5ndWFnZS4KCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRGVsZXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBsYW5ndWFnZSBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIExhbmd1YWdlRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXR0cmlidXRlIChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGxhbmd1YWdlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGFuZ3VhZ2VEdXBsaWNhdGVDaGVjaygpCgpjaGVjayBhIGxhbmd1YWdlCgogICAgbXkgJEV4aXN0cyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgTmFtZSAgICAgICA9PiAnU29tZSBOYW1lJywKICAgICAgICBMYW5ndWFnZUlEID0+IDEsICAgICAgICAjIGZvciB1cGRhdGUKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRXhpc3RzID0gMTsgICAgICAgICAgICAgICAgIyBpZiBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cywgb3IgMCBpZiBkb2VzIG5vdCBleGlzdAoKPWN1dAoKc3ViIExhbmd1YWdlRHVwbGljYXRlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgQEJpbmQgPSAoIFwkUGFyYW17TmFtZX0gKTsKICAgIG15ICRTUUwgID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgV0hFUkUgbmFtZSA9ID8nOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte0xhbmd1YWdlSUR9OwogICAgICAgICRTUUwgLj0gIiBBTkQgaWQgIT0gPyI7CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgU1FMIHN0YXRlbWVudAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEV4aXN0cyA9IDE7CiAgICB9CgogICAgcmV0dXJuICRFeGlzdHM7Cn0KCj1pdGVtIExhbmd1YWdlR2V0KCkKCmdldCBhIGxhbmd1YWdlIGRldGFpbHMgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZSA9ICgKICAgICAgICBMYW5ndWFnZUlEID0+ICcxJywKICAgICAgICBOYW1lICAgICAgID0+ICdlbicsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExhbmd1YWdlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZXMgPSAoCiAgICAgICAgMSA9PiAnZW4nLAogICAgICAgIDIgPT4gJ2RlJywKICAgICAgICAzID0+ICdlcycsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBidWlsZCBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZScsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gJUxpc3Q7Cn0KCj1pdGVtIExhbmd1YWdlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgRkFRIGxhbmd1YWdlLgpJZiBhIGxhbmd1YWdlIGlkIGlzIGdpdmVuLCBpdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZS4KSWYgdGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIGlzIGdpdmVuLCB0aGUgbGFuZ3VhZ2UgaWQgaXMgcmV0dXJuZWQuCgogICAgbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICk7CgogICAgbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBOYW1lID0+ICdlbicsCiAgICApOwoKUmV0dXJuczoKCiAgICAkTGFuZ3VhZ2VOYW1lID0gJ2VuJzsKCiAgICAkTGFuZ3VhZ2VJRCA9IDE7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGlmIGJvdGggcGFyYW1ldGVycyBhcmUgZ2l2ZW4KICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFuZ3VhZ2VJRCBvciBOYW1lIC0gbm90IGJvdGghJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIG5vdCBnaXZlbgogICAgaWYgKCAhJFBhcmFte0xhbmd1YWdlSUR9ICYmICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vbmUgaXMgZ2l2ZW4hJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBMYW5ndWFnZUlEIGlzIGEgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkUGFyYW17TGFuZ3VhZ2VJRH0gIX4gbXsgXEEgXGQrIFx6IH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJMYW5ndWFnZUlEIG11c3QgYmUgYSBudW1iZXIhIChMYW5ndWFnZUlEOiAkUGFyYW17TGFuZ3VhZ2VJRH0pIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgU1FMIHN0YXRlbWVudHMKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICkgewoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBuYW1lCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0xhbmd1YWdlSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICkgewoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICAgICAgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRMb29rdXA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTG9va3VwID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJExvb2t1cDsKfQoKPWl0ZW0gTGFuZ3VhZ2VVcGRhdGUoKQoKdXBkYXRlIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlVXBkYXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdkZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGJ1aWxkIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgU0VUIG5hbWUgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCByZWxhdGVkIGZhcSBhcnRpY2xlIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBSZWxhdGVkQXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZm9yIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgoKICAgIG15IEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT5SZWxhdGVkQXJ0aWNsZUxpc3QoCiAgICAgICAgU3ViamVjdCAgID0+ICdUaXRsZSBFeGFtcGxlJywKICAgICAgICBCb2R5ICAgICAgPT4gJ1RleHQgRXhhbXBsZScsICAjIHBvc3NpYmxlIHdpdGggaHRtbCB0YWdzICh3aWxsIGJlIHJlbW92ZWQgZm9yIHRoZSBzZWFyY2gpCiAgICAgICAgTGFuZ3VhZ2VzID0+WyAnZW4nIF0sICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIExpbWl0ICAgICA9PiAxMCwgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgbXkgQFJlbGF0ZWRBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBBU0NJSSBjb250ZW50IGZvcm0gdGhlIGdpdmVuIGJvZHksIHRvIGhhdmUgbm8gaHRtbCB0YWdzIGZvciB0aGUgY2hlY2suCiAgICAkUGFyYW17Qm9keX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtCb2R5fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkUGFyYW17U3ViamVjdH0gJiYgISRQYXJhbXtCb2R5fTsKCiAgICAjIFRvIHNhdmUgdGhlIGtleXdvcmRzIGFuZCB0aGUgY291bnRlciBmb3IgdGhlIGRpZmZlcmVudCBrZXl3b3Jkcy4KICAgIG15ICVDb250ZW50S2V5d29yZHM7CgogICAgIyBTdHJpcCBub3Qgd2FudGVkIHN0dWZmIGZyb20gdGhlIGdpdmVuIHN1YmplY3QgYW5kIGJvZHkuCiAgICBmb3IgbXkgJEZpZWxkIChxdyhTdWJqZWN0IEJvZHkpKSB7CgogICAgICAgICRQYXJhbXskRmllbGR9IHx8PSAnJzsKCiAgICAgICAgIyBSZW1vdmUgdGhlIGxpbmtzIGZyb20gdGhlIGNvbnRlbnQuCiAgICAgICAgJFBhcmFteyRGaWVsZH0gPSAkU2VsZi0+X1JlbW92ZUxpbmtzRnJvbUNvbnRlbnQoCiAgICAgICAgICAgIENvbnRlbnQgPT4gJFBhcmFteyRGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTcGxpdCB0aGUgdGV4dCBpbiB3b3JkIGFuZCBzYXZlIHRoZSB3b3JkIGFzIHRoZSBnaXZlbiBrZXl3b3JkcyAoc2VwYXJhdG9yIGlzIGEgd2hpdGVzcGFjZSkuCiAgICAgICAgJFBhcmFteyRGaWVsZH0gPX4gc3tbXC5cLFw7XDpdKFxzfFxzPyBcWiApfXsgfXhtc2c7CiAgICAgICAgbXkgQEZpZWxkS2V5d29yZHMgPSAoICRQYXJhbXskRmllbGR9ID1+IG17IFtcd1x4ezA5ODB9LVx4ezA5RkZ9XC1dK1wuP1tcd1x4ezA5ODB9LVx4ezA5RkZ9XC1dKiB9eG1zZyApOwoKICAgICAgICBLRVlXT1JEOgogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEZpZWxkS2V5d29yZHMpIHsKCiAgICAgICAgICAgICMgU2F2ZSB0aGUga2V5d29yZHMgYWx3YXlzIGFzIGxvd2VyIGNhc2UuCiAgICAgICAgICAgICRLZXl3b3JkID0gbGMgJEtleXdvcmQ7CgogICAgICAgICAgICAjIEluY3JlYXNlIHRoZSBrZXl3b3JkIGNvdW50ZXIgZnJvbSB0aGUgdGV4dCBjb250ZW50LCB0byBpbmNyZWFzZSB0aGUgcmVsZXZhbmNlIGZvciB0aGlzIGtleXdvcmQuCiAgICAgICAgICAgICRDb250ZW50S2V5d29yZHN7JEtleXdvcmR9Kys7CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IHRoZSBrZXl3b3JkIGFydGljbGUgbGlzdCBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlcy4KICAgIG15ICVGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPSAkU2VsZi0+RkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIExhbmd1YWdlcyAgICA9PiAkUGFyYW17TGFuZ3VhZ2VzfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBCdWlsZCB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZXMgYW5kIHNhdmUgYSBxdWFudGlmaWVyIGZvciB0aGUgZGlmZmVyZW50IGFydGljbGVzIHdpdGggdGhlIHJlbGV2YW5jZQogICAgIyAgIGZyb20gdGhlIGtleXdvcmQsIHdoaWNoIGlzIHJlbGF0ZWQgdG8gdGhlIGZhcSBhcnRpY2xlLgogICAgIyBFLmcuCiAgICAjICAgLSBGQVFBcnRpY2xlIDEgd2l0aCBrZXl3b3JkczogICdpdHNtJywgJ2NoYW5nZW1hbmFnZW1lbnQnLCAndGlja2V0JwogICAgIyAgIC0gRkFRQXJ0aWNsZSAyIHdpdGgga2V5d29yZHM6ICdpdHNtJywgJ2NoYW5nZW1hbmdlbWVudCcKICAgICMgICAtIEZBUUFydGljbGUgMyB3aXRoIGtleXdvcmRzOiAndGlja2V0JwogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGNoYW5nZW1hbmFnZW1lbnQgKDUpCiAgICAjICAgLSB0aWNrZXQgKDQpCiAgICAjICAgLSBpdHNtICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxID0+IDExCiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNgogICAgIyAgIC0gRkFRQXJ0aWNsZSAzID0+IDQKICAgIG15ICVMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXM7CgogICAgQ09OVEVOVEtFWVdPUkQ6CiAgICBmb3IgbXkgJENvbnRlbnRLZXl3b3JkICggc29ydCBrZXlzICVDb250ZW50S2V5d29yZHMgKSB7CgogICAgICAgIG5leHQgQ09OVEVOVEtFWVdPUkQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJEZBUUtleXdvcmRBcnRpY2xlTGlzdHskQ29udGVudEtleXdvcmR9ICk7CgogICAgICAgIEZBUUFSVElDTEVJRDoKICAgICAgICBmb3IgbXkgJEZBUUFydGljbGVJRCAoIEB7ICRGQVFLZXl3b3JkQXJ0aWNsZUxpc3R7JENvbnRlbnRLZXl3b3JkfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc3skRkFRQXJ0aWNsZUlEfSApIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRQXJ0aWNsZURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRQXJ0aWNsZUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkRkFRQXJ0aWNsZURhdGF7Vm90ZXN9ICkgewogICAgICAgICAgICAgICAgICAgICRGQVFBcnRpY2xlRGF0YXtTdGFyQ291bnRlcn0gPSBpbnQoICRGQVFBcnRpY2xlRGF0YXtWb3RlUmVzdWx0fSAqIDAuMDUgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBBZGQgMSBiZWNhdXNlIGxvd2VzdCB2YWx1ZSBzaG91bGQgYmUgYWx3YXlzIDEuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRkFRQXJ0aWNsZURhdGF7U3RhckNvdW50ZXJ9IDwgNSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZBUUFydGljbGVEYXRhe1N0YXJDb3VudGVyfSsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEFkZCB0aGUgRkFRIGFydGljbGUgZGF0YSB0byB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuCiAgICAgICAgICAgICAgICAkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzeyRGQVFBcnRpY2xlSUR9ID0gewogICAgICAgICAgICAgICAgICAgICVGQVFBcnRpY2xlRGF0YSwKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkQ291bnRlciA9PiAkQ29udGVudEtleXdvcmRzeyRDb250ZW50S2V5d29yZH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgSW5jcmVhc2UgdGhlIHF1YW50aWZpZXIsIGlmIHRoZSBhcnRpY2xlIGhhcyBtb3JlIHRoZW4gb25lIHJlbGV2YW50IGtleXdvcmQuCiAgICAgICAgICAgICAgICAkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzeyRGQVFBcnRpY2xlSUR9LT57S2V5d29yZENvdW50ZXJ9ICs9ICRDb250ZW50S2V5d29yZHN7JENvbnRlbnRLZXl3b3JkfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIFRvIHNhdmUgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUgZnJvbSB0aGUgbG9va3VwIGhhc2guCiAgICBteSBAUmVsYXRlZEZBUUFydGljbGVMaXN0ID0gbWFwIHsgJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc3skX30gfSBzb3J0IGtleXMgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlczsKCiAgICAjIFNvcnQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcGx1Zy1pbnMgYnkgJ2tleXdvcmQgcXVhbnRpZmllcicsICdjaGFuZ2UgdGltZScgYW5kICdpZCAoY3JlYXRlIHRpbWUpJy4KICAgIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPSBzb3J0IHsKICAgICAgICAkYi0+e0tleXdvcmRDb3VudGVyfSA8PT4gJGEtPntLZXl3b3JkQ291bnRlcn0gfHwgJGItPntDaGFuZ2VkfSBjbXAgJGEtPntDaGFuZ2VkfSB8fCAkYi0+e0lEfSBjbXAgJGEtPntJRH0KICAgIH0gQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdDsKCiAgICAjIEN1dCB0aGUgbm90IG5lZWRlZCBhcnRpY2xlcyBmcm9tIHRoZSBhcnJheSwgaWYgYSBsaW1pdCBpcyBnaXZlbi4KICAgIGlmICggJFBhcmFte0xpbWl0fSAmJiBzY2FsYXIgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA+ICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgc3BsaWNlIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QsICRQYXJhbXtMaW1pdH07CiAgICB9CgogICAgcmV0dXJuIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1pdGVtIF9SZW1vdmVMaW5rc0Zyb21Db250ZW50KCkKClJlbW92ZSBsaW5rcyBmcm9tIHRoZSBnaXZlbiBjb250ZW50LgoKICAgIG15ICRDb250ZW50ID0gJEZBUU9iamVjdC0+X1JlbW92ZUxpbmtzRnJvbUNvbnRlbnQoCiAgICAgICAgQ29udGVudCA9PiAnU29tZSBUZXh0IHdpdGggYSBsaW5rLiBNb3JlIHRleHQuIFsxXSBodHRwczovL290cnMuY29tLycsCiAgICApOwoKUmV0dXJucwoKICAgICRDb250ZW50ID0gJ1NvbWUgVGV4dCB3aXRoIGEgbGluay4gTW9yZSB0ZXh0Lic7Cgo9Y3V0CgpzdWIgX1JlbW92ZUxpbmtzRnJvbUNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17Q29udGVudH0gPX4gc3sgXFtcZCpcXSB9e314bXNnOwogICAgJFBhcmFte0NvbnRlbnR9ID1+IHN7IGh0dHBzOi8vW15cc10qIH17fXhtc2c7CgogICAgcmV0dXJuICRQYXJhbXtDb250ZW50fTsKfQoKMTsKCj1lbmQgSW50ZXJuYWw6Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBGQVEgc3RhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIFN0YXRlQWRkKCkKCmFkZCBhIHN0YXRlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TdGF0ZUFkZCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVHlwZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBzdGF0ZSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBTdGF0ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFR5cGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfc3RhdGUgKG5hbWUsIHR5cGVfaWQpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gU3RhdGVHZXQoKQoKZ2V0IGEgc3RhdGUgYXMgaGFzaAoKICAgIG15ICVTdGF0ZSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlU3RhdGUgPSAoCiAgICAgICAgU3RhdGVJRCAgPT4gMSwKICAgICAgICBOYW1lICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsCiAgICAgICAgVHlwZUlEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgU3RhdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUsIHR5cGVfaWQKICAgICAgICAgICAgRlJPTSBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3RhdGVJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBTdGF0ZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgVHlwZUlEICA9PiAkUm93WzJdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aXRlbSBTdGF0ZUxpc3QoKQoKZ2V0IHRoZSBzdGF0ZSBsaXN0IGFzIGhhc2gKCiAgICBteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVN0YXRlcyA9ICgKICAgICAgICAxID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAyID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAzID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0ZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICAgICAgRlJPTSBmYXFfc3RhdGUnCiAgICApOwoKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aXRlbSBTdGF0ZVVwZGF0ZSgpCgp1cGRhdGUgYSBzdGF0ZQoKICAgIG15IFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TdGF0ZVVwZGF0ZSgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywKICAgICAgICBUeXBlSUQgID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgc3RhdGUgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBTdGF0ZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdGF0ZUlEIE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX3N0YXRlCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgdHlwZV9pZCA9ID8sCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSwgXCRQYXJhbXtTdGF0ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gU3RhdGVUeXBlR2V0KCkKCmdldCBhIHN0YXRlIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgU3RhdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpPcgoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3RhdGVUeXBlSGFzaFJlZiA9IHsKICAgICAgICAnU3RhdGVJRCcgPT4gMSwKICAgICAgICAnTmFtZScgICAgPT4gJ2ludGVybmFsJywKICAgIH07Cgo9Y3V0CgpzdWIgU3RhdGVUeXBlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlCiAgICAgICAgV0hFUkUnOwogICAgbXkgQEJpbmQ7CiAgICBteSAkQ2FjaGVLZXkgPSAnU3RhdGVUeXBlR2V0OjonOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTdGF0ZUlEfSApIHsKICAgICAgICAkU1FMIC49ICcgaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJyBuYW1lID0gPyc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRQYXJhbXtOYW1lfTsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ05hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmQsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkUm93WzFdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDI0ICogMiwKICAgICk7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpvcHRpb25hbCwgZ2V0IHN0YXRlIHR5cGUgbGlzdCBmb3Igc29tZSBzdGF0ZXM6CgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnXSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdGF0ZVR5cGVIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAzID0+ICdwdWJsaWMnLAogICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgIH07Cgo9Y3V0CgpzdWIgU3RhdGVUeXBlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYnVpbGQgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgIEZST00gZmFxX3N0YXRlX3R5cGUnOwoKICAgICMgdHlwZXMgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtUeXBlc30gKSB7CgogICAgICAgIGlmICggcmVmICRQYXJhbXtUeXBlc30gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1R5cGVzIHNob3VsZCBiZSBhbiBhcnJheSByZWZlcmVuY2UhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2FsbCBTdGF0ZVR5cGVMaXN0IHdpdGhvdXQgcGFyYW1ldGVycyB0byB2YWxpZGF0ZSBUeXBlcwogICAgICAgIG15ICRTdGF0ZVR5cGVMaXN0ID0gJFNlbGYtPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSApOwogICAgICAgIG15ICVTdGF0ZVR5cGVzICAgID0gcmV2ZXJzZSAleyRTdGF0ZVR5cGVMaXN0fTsKICAgICAgICBteSBAVHlwZXM7CgogICAgICAgICMgb25seSBhZGQgdHlwZXMgdG8gbGlzdCB0aGF0IGV4aXN0CiAgICAgICAgVFlQRToKICAgICAgICBmb3IgbXkgJFR5cGUgKCBAeyAkUGFyYW17VHlwZXN9IH0gKSB7CiAgICAgICAgICAgIG5leHQgVFlQRSBpZiAhJFN0YXRlVHlwZXN7JFR5cGV9OwogICAgICAgICAgICBwdXNoIEBUeXBlcywgIickVHlwZSciOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgaWYgKEBUeXBlcykgewogICAgICAgICAgICAkU1FMIC49ICcgV0hFUkUgbmFtZSBJTiAoICcgLiBqb2luKCAnLCAnLCBAVHlwZXMgKSAuICcgKSc7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRMaXN0eyAkUm93WzBdIH0gPSAkUm93WzFdOwogICAgfQoKICAgIHJldHVybiBcJUxpc3Q7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgRkFRIHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIFZvdGVBZGQoKQoKYWRkIGEgdm90ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFJhdGUgICAgICA9PiAxMDAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHZvdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgVm90ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfdm90aW5nIChjcmVhdGVkX2J5LCBpdGVtX2lkLCBpcCwgaW50ZXJmYWNlLCByYXRlLCBjcmVhdGVkICkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAgKScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q3JlYXRlZEJ5fSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0lQfSwgXCRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBcJFBhcmFte1JhdGV9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbVZvdGVEYXRhR2V0OjonIC4gJFBhcmFte0l0ZW1JRH07CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBWb3RlRGVsZXRlKCkKCmRlbGV0ZSBhIHZvdGUKCiAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgVm90ZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHZvdGUgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBWb3RlRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZvdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Vm90ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gVm90ZUdldCgpCgpnZXQgYSB2b3RlIGluZm9ybWF0aW9uCgogICAgbXkgJVZvdGVEYXRhID0gJEZBUU9iamVjdC0+Vm90ZUdldCgKICAgICAgICBDcmVhdGVCeSAgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIElQICAgICAgICA9PiAnMTI3LjAuMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlVm90ZURhdGEgPSAoCiAgICAgICAgSXRlbUlEICAgID0+IDIzLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIG9yIDI1IG9yIDc1IG9yIDEwMAogICAgICAgIElQICAgICAgICA9PiAnMTkyLjE2OC4wLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlcmZhY2UgSUQKICAgICAgICBDcmVhdGVkQnkgPT4gMSwKICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDYtMTQgMTI6MzI6MDMnLAogICAgKTsKCj1jdXQKCnN1YiBWb3RlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENyZWF0ZUJ5IEl0ZW1JRCBJbnRlcmZhY2UgSVAgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFZhbHVlczsKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGNyZWF0ZWRfYnksIGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIGNyZWF0ZWQsIHJhdGUKICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICBXSEVSRSc7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBpcCA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtJUH0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgY3VzdG9tZXIKICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzInIHx8ICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgY3JlYXRlZF9ieSA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtDcmVhdGVCeX0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgbGVhdmUgYSBzcGFjZSBiZXR3ZWVuIEFORCBjb25kaXRpb24gYW5kIE9SREVSIEJZIHN0YXRlbWVudAogICAgJFNRTCAuPSAnCiAgICAgICAgT1JERVIgQlkgY3JlYXRlZCBERVNDJzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBWYWx1ZXMsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbMF0sCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFJvd1syXSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRSb3dbM10sCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAkUm93WzRdLAogICAgICAgICAgICBSYXRlICAgICAgPT4gJFJvd1s1XSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBpZiAhJURhdGE7CiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aXRlbSBWb3RlU2VhcmNoKCkKCnJldHVybnMgYW4gYXJyYXkgd2l0aCBWb3RlSURzCgogICAgbXkgJFZvdGVJREFycmF5cmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlSURBcnJheXJlZiA9IFsKICAgICAgICAyMywKICAgICAgICA0NSwKICAgIF07Cgo9Y3V0CgpzdWIgVm90ZVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKCiAgICBteSBAVm90ZUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFZvdGVJRHMsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAVm90ZUlEczsKfQoKPWl0ZW0gSXRlbVZvdGVEYXRhR2V0KCkKClJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSBudW1iZXIgb2Ygdm90ZXMgYW5kIHRoZSB2b3RlIHJlc3VsdC4KCiAgICBteSAkVm90ZURhdGFIYXNoUmVmID0gJEZBUU9iamVjdC0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVm90ZURhdGFIYXNoUmVmID0gewogICAgICAgIFJlc3VsdCA9PiA3NS4wMDAwLAogICAgICAgIFZvdGVzICA9PiA1CiAgICB9OwoKPWN1dAoKc3ViIEl0ZW1Wb3RlRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbVZvdGVEYXRhR2V0OjonIC4gJFBhcmFte0l0ZW1JRH07CiAgICBteSAkQ2FjaGUgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGNvdW50KCopLCBhdmcocmF0ZSkKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7Vm90ZXN9ICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UmVzdWx0fSA9ICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSByZXN1bHQKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDI0ICogMiwKICAgICk7CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgYmFzZSBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2gKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlCiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpDYXRlZ29yeQogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6U3RhdGUKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlCiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpWb3RlCiAgICBLZXJuZWw6OlN5c3RlbTo6RXZlbnRIYW5kbGVyCik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUSAtICBGQVEgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBGQVEgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgRkFRcyBvciB0byBnZXQgRkFRcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG9wdGlvbnMKICAgICRTZWxmLT57Vm90aW5nfSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIGdldCB0aGUgY2FjaGUgVFRMIChpbiBzZWNvbmRzKQogICAgJFNlbGYtPntDYWNoZVRUTH0gPSBpbnQoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDYWNoZVRUTCcpIHx8IDYwICogNjAgKiAyNCAqIDIgKTsKCiAgICAjIGluaXQgb2YgZXZlbnQgaGFuZGxlcgogICAgIyBjdXJyZW50bHkgdGhlcmUgYXJlIG5vIEZBUSBldmVudCBtb2R1bGVzIGJ1dCBpcyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBvdGhlcndpc2UgZXJyb3JzIGFyZQogICAgIyAgICAgbG9nIGR1ZSB0byBzZWFyY2hpbmcgdW5kZWZpbmVkIHNldHRpbmcgaW50byBDb25maWdPYmplY3QuCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVySW5pdCgKICAgICAgICBDb25maWcgPT4gJycsCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gRkFRR2V0KCkKCmdldCBhbiBGQVEgaXRlbQoKICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLCAgICAgICAgIyBPcHRpb25hbCwgZGVmYXVsdCAwLiBUbyBpbmNsdWRlIHRoZSBpdGVtIGZpZWxkIGNvbnRlbnQgZm9yIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgRkFRIGl0ZW0gb24gdGhlIHJldHVybiBzdHJ1Y3R1cmUuCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUZBUSA9ICgKICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMiwKICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMiwKICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMiwKICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzIsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgIENhdGVnb3J5TmFtZScgICAgID0+ICdDYXRlZ29yeUE6OkNhdGVnb3J5QicsCiAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5QicsCiAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgIFZhbGlkSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgVmFsaWQgICAgICAgICAgICAgPT4gJ3ZhbGlkJywKICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICBDaGFuZ2VkJyAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgKTsKCiAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRkFRID0gKAogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgQ2F0ZWdvcnlOYW1lJyAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgIEZpZWxkMSAgICAgICAgICAgID0+ICdUaGUgU3ltcHRvbXMnLAogICAgICAgIEZpZWxkMiAgICAgICAgICAgID0+ICdUaGUgUHJvYmxlbScsCiAgICAgICAgRmllbGQzICAgICAgICAgICAgPT4gJ1RoZSBTb2x1dGlvbicsCiAgICAgICAgRmllbGQ0ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgIEZpZWxkNSAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICBGaWVsZDYgICAgICAgICAgICA9PiAnQ29tbWVudHMnLAogICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgVmFsaWRJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9wbGFpbicsICAgICAgICAgICAgICAgICAgIyBvciAndGV4dC9odG1sJwogICAgICAgIFZhbGlkICAgICAgICAgICAgID0+ICd2YWxpZCcsCiAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlZCcgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIENoYW5nZWRCeSAgICAgICAgID0+ICcxJywKICAgICAgICBDcmVhdGVkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJzEyOTQyODYwMzAtMzEuMTY5NzI5NzEwNDczMicsICAjIEZBUSBBcnRpY2xlIG5hbWUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3lzdGVtdGltZSArICctJyArIHJhbmRvbSBudW1iZXIKICAgICk7Cgo9Y3V0CgpzdWIgRkFRR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBGYWlsdXJlcyByZW5hbWUgZnJvbSBJdGVtSUQgdG8gRkFRSUQKICAgIGlmICggJFBhcmFte0ZBUUlEfSApIHsKICAgICAgICAkUGFyYW17SXRlbUlEfSA9ICRQYXJhbXtGQVFJRH07CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkRmV0Y2hJdGVtRmllbGRzID0gJFBhcmFte0l0ZW1GaWVsZHN9ID8gMSA6IDA7CgogICAgbXkgJENhY2hlS2V5ID0gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0gLiAnOjpJdGVtRmllbGRzOjonIC4gJEZldGNoSXRlbUZpZWxkczsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZXQgJURhdGEgZnJvbSBjYWNoZSBpZiBhbnkKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKICAgICAgICAlRGF0YSA9ICV7JENhY2hlfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBnZXQgJURhdGEgZnJvbSB0aGUgREIKICAgIGVsc2UgewoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpLmZfbmFtZSwgaS5mX2xhbmd1YWdlX2lkLCBpLmZfc3ViamVjdCwgaS5jcmVhdGVkLCBpLmNyZWF0ZWRfYnksIGkuY2hhbmdlZCwKICAgICAgICAgICAgICAgICAgICBpLmNoYW5nZWRfYnksIGkuY2F0ZWdvcnlfaWQsIGkuc3RhdGVfaWQsIGMubmFtZSwgcy5uYW1lLCBsLm5hbWUsIGkuZl9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICBpLmFwcHJvdmVkLCBpLnZhbGlkX2lkLCBpLmNvbnRlbnRfdHlwZSwgaS5mX251bWJlciwgc3QuaWQsIHN0Lm5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2l0ZW0gaSwgZmFxX2NhdGVnb3J5IGMsIGZhcV9zdGF0ZSBzLCBmYXFfc3RhdGVfdHlwZSBzdCwgZmFxX2xhbmd1YWdlIGwKICAgICAgICAgICAgICAgIFdIRVJFIGkuc3RhdGVfaWQgPSBzLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIHMudHlwZV9pZCA9IHN0LmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuY2F0ZWdvcnlfaWQgPSBjLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuZl9sYW5ndWFnZV9pZCA9IGwuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgJURhdGEgPSAoCgogICAgICAgICAgICAgICAgIyB2YXIgZm9yIG9sZCB2ZXJzaW9ucwogICAgICAgICAgICAgICAgSUQgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGQVFJRCA9PiAkUGFyYW17SXRlbUlEfSwKCiAgICAgICAgICAgICAgICAjIGdldCBkYXRhIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgICAgICBDcmVhdGVkICAgICAgID0+ICRSb3dbM10sCiAgICAgICAgICAgICAgICBDcmVhdGVkQnkgICAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgICAgICBDaGFuZ2VkICAgICAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgICAgICBDaGFuZ2VkQnkgICAgID0+ICRSb3dbNl0sCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgID0+ICRSb3dbN10sCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgID0+ICRSb3dbOF0sCiAgICAgICAgICAgICAgICBDYXRlZ29yeU5hbWUgID0+ICRSb3dbOV0sCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgID0+ICRSb3dbMTBdLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICA9PiAkUm93WzExXSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgICAgPT4gJFJvd1sxMl0sCiAgICAgICAgICAgICAgICBBcHByb3ZlZCAgICAgID0+ICRSb3dbMTNdLAogICAgICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAkUm93WzE0XSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgPT4gJFJvd1sxNV0sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgID0+ICRSb3dbMTZdLAogICAgICAgICAgICAgICAgU3RhdGVUeXBlSUQgICA9PiAkUm93WzE3XSwKICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgPT4gJFJvd1sxOF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJURhdGEgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIEl0ZW1JRCAkUGFyYW17SXRlbUlEfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBGQVEgaXRlbSBmaWVsZHMgYXJlIHJlcXVpcmVkCiAgICAgICAgaWYgKCRGZXRjaEl0ZW1GaWVsZHMpIHsKCiAgICAgICAgICAgIGZvciBteSAkRmllbGROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgZmllbGQgbmFtZQogICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gIkZpZWxkJEZpZWxkTnVtYmVyIjsKCiAgICAgICAgICAgICAgICAjIGdldCBlYWNoIGZpZWxkIGNvbnRlbnQKICAgICAgICAgICAgICAgICREYXRheyRGaWVsZH0gPSAkU2VsZi0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBudW1iZXIKICAgICAgICBpZiAoICEkRGF0YXtOdW1iZXJ9ICkgewoKICAgICAgICAgICAgbXkgJE51bWJlciA9ICRDb25maWdPYmplY3QtPkdldCgnU3lzdGVtSUQnKSAuICcwMCcgLiAkRGF0YXtJdGVtSUR9OwoKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIGZhcV9pdGVtIFNFVCBmX251bWJlciA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJE51bWJlciwgXCREYXRhe0l0ZW1JRH0gXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREYXRhe051bWJlcn0gPSAkTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGNhdGVnb3J5IGxvbmcgbmFtZXMKICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJFNlbGYtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgdGhlIGNhdGVnb3J5IHNob3J0IG5hbWUKICAgICAgICAkRGF0YXtDYXRlZ29yeVNob3J0TmFtZX0gPSAkRGF0YXtDYXRlZ29yeU5hbWV9OwoKICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgbG9uZyBuYW1lCiAgICAgICAgJERhdGF7Q2F0ZWdvcnlOYW1lfSA9ICRDYXRlZ29yeVRyZWUtPnsgJERhdGF7Q2F0ZWdvcnlJRH0gfTsKCiAgICAgICAgIyBnZXQgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICAgICAgJERhdGF7VmFsaWR9ID0gJFZhbGlkTGlzdHsgJERhdGF7VmFsaWRJRH0gfTsKCiAgICAgICAgIyBjYWNoZSByZXN1bHQKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHZvdGUgZGF0YSBmb3IgdGhpcyBGQVEgaXRlbQogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJFNlbGYtPkl0ZW1Wb3RlRGF0YUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZnJvbSBjb25maWcKICAgIG15ICREZWNpbWFsUGxhY2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcycpIHx8IDA7CgogICAgIyBmb3JtYXQgdGhlIHZvdGUgcmVzdWx0CiAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoICIlMC4iIC4gJERlY2ltYWxQbGFjZXMgLiAiZiIsICRWb3RlRGF0YS0+e1Jlc3VsdH0gfHwgMCApOwoKICAgICMgYWRkIHZvdGluZyBpbmZvcm1hdGlvbiB0byBGQVEgaXRlbQogICAgJERhdGF7Vm90ZVJlc3VsdH0gPSAkVm90ZVJlc3VsdDsKICAgICREYXRhe1ZvdGVzfSAgICAgID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgIyBjaGVjayBpZiBuZWVkIHRvIHJldHVybiBEeW5hbWljRmllbGRzCiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRzfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzIGZvciB0aGUgb2JqZWN0IHR5cGUgRkFRCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0ZBUScKICAgICAgICApOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30gKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlIGZvciBlYWNoIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgbmFtZSBhbmQgdmFsdWUgaW50byB0aGUgZGF0YSBoYXNoCiAgICAgICAgICAgICREYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9CgpzdWIgSXRlbUZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBJdGVtSUQgRmllbGQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciB2YWxpZCBmaWVsZCBuYW1lCiAgICBpZiAoICRQYXJhbXtGaWVsZH0gIX4gbXsgXEEgRmllbGQgWzEtNl0gXHogfW1zeGkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAnJFBhcmFte0ZpZWxkfScgaXMgaW52YWxpZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfTsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBjYWNoZSBlbnRyeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBGaWVsZAogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyAmJiBleGlzdHMgJENhY2hlLT57ICRQYXJhbXtGaWVsZH0gfSApIHsKCiAgICAgICAgcmV0dXJuICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH07CiAgICB9CgogICAgIyBjcmVhdGUgYSBmaWVsZCBsb29rdXAgdGFibGUKICAgIG15ICVGaWVsZExvb2t1cCA9ICgKICAgICAgICBGaWVsZDEgPT4gJ2ZfZmllbGQxJywKICAgICAgICBGaWVsZDIgPT4gJ2ZfZmllbGQyJywKICAgICAgICBGaWVsZDMgPT4gJ2ZfZmllbGQzJywKICAgICAgICBGaWVsZDQgPT4gJ2ZfZmllbGQ0JywKICAgICAgICBGaWVsZDUgPT4gJ2ZfZmllbGQ1JywKICAgICAgICBGaWVsZDYgPT4gJ2ZfZmllbGQ2JywKICAgICk7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAnIC4gJEZpZWxkTG9va3VweyAkUGFyYW17RmllbGR9IH0gLiAnCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRGaWVsZDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRGaWVsZCA9ICRSb3dbMF0gfHwgJyc7CiAgICB9CgogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKCiAgICAgICAgIyBDYWNoZSBmaWxlIGZvciBJdGVtSUQgYWxyZWFkeSBleGlzdHMsIGFkZCBmaWVsZCBkYXRhLgogICAgICAgICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH0gPSAkRmllbGQ7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBDcmVhdGUgbmV3IGNhY2hlIGZpbGUuCiAgICAgICAgJENhY2hlID0gewogICAgICAgICAgICAkUGFyYW17RmllbGR9ID0+ICRGaWVsZCwKICAgICAgICB9OwogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gJENhY2hlLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gJEZpZWxkOwp9Cgo9aXRlbSBGQVFBZGQoKQoKYWRkIGFuIGFydGljbGUKCiAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIE51bWJlciAgICAgID0+ICcxMzQwMicsICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMiAgICAgID0+ICdQcm9ibGVtLi4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkMyAgICAgID0+ICdTb2x1dGlvbi4uLicsICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNCAgICAgID0+ICdGaWVsZDQuLi4nLCAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNSAgICAgID0+ICdGaWVsZDUuLi4nLCAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEZpZWxkNiAgICAgID0+ICdDb21tZW50Li4uJywgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEFwcHJvdmVkICAgID0+IDEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLCAgICAgIyBvciAndGV4dC9odG1sJwogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkSXRlbUlEID0gMzQ7Cgo9Y3V0CgpzdWIgRkFRQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbG9nIG9iamVjdAogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVGl0bGUgVXNlcklEIENvbnRlbnRUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUgZm9yIFZhbGlkSUQKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkSUR9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgbXkgQFZhbGlkSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICRQYXJhbXtWYWxpZElEfSA9ICRWYWxpZElEc1swXTsKICAgIH0KCiAgICAjIGNoZWNrIG5hbWUKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17TmFtZX0gPSB0aW1lKCkgLiAnLScgLiByYW5kKDEwMCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBudW1iZXIKICAgIGlmICggISRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW1JRCcpIC4gcmFuZCgxMDApOwogICAgfQoKICAgICMgY2hlY2sgaWYgYXBwcm92YWwgZmVhdHVyZSBpcyB1c2VkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IHRvIDAgaWYgYXBwcm92ZWQgcGFyYW0gaXMgbm90IGdpdmVuCiAgICAgICAgIyBvciBpZiB1c2VyIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0cyB0byBhcHByb3ZlCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17QXBwcm92ZWR9IHx8ICEkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKICAgICAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgYXBwcm92YWwgZmVhdHVyZSBpcyBub3QgYWN0aXZhdGVkLCBhIG5ldyBGQVEgaXRlbSBpcyBhbHdheXMgYXBwcm92ZWQKICAgIGVsc2UgewogICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9pdGVtCiAgICAgICAgICAgICAgICAoZl9udW1iZXIsIGZfbmFtZSwgZl9sYW5ndWFnZV9pZCwgZl9zdWJqZWN0LAogICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQsIHN0YXRlX2lkLCBmX2tleXdvcmRzLCBhcHByb3ZlZCwgdmFsaWRfaWQsIGNvbnRlbnRfdHlwZSwKICAgICAgICAgICAgICAgIGZfZmllbGQxLCBmX2ZpZWxkMiwgZl9maWVsZDMsIGZfZmllbGQ0LCBmX2ZpZWxkNSwgZl9maWVsZDYsCiAgICAgICAgICAgICAgICBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KQogICAgICAgICAgICBWQUxVRVMKICAgICAgICAgICAgICAgICg/LCA/LCA/LCA/LAogICAgICAgICAgICAgICAgPywgPywgPywgPywgPywgPywKICAgICAgICAgICAgICAgID8sID8sID8sID8sID8sID8sCiAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOdW1iZXJ9LCAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwgXCRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sIFwkUGFyYW17U3RhdGVJRH0sIFwkUGFyYW17S2V5d29yZHN9LCAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LCAgICBcJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDF9LCBcJFBhcmFte0ZpZWxkMn0sIFwkUGFyYW17RmllbGQzfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDR9LCBcJFBhcmFte0ZpZWxkNX0sIFwkUGFyYW17RmllbGQ2fSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBidWlsZCBTUUwgdG8gZ2V0IHRoZSBpZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgRkFRIGFydGljbGUKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkIEZST00gZmFxX2l0ZW0KICAgICAgICBXSEVSRSBmX251bWJlciA9ID8KICAgICAgICAgICAgQU5EIGZfbmFtZSA9ID8KICAgICAgICAgICAgQU5EIGZfbGFuZ3VhZ2VfaWQgPSA/CiAgICAgICAgICAgIEFORCBjYXRlZ29yeV9pZCA9ID8KICAgICAgICAgICAgQU5EIHN0YXRlX2lkID0gPwogICAgICAgICAgICBBTkQgYXBwcm92ZWQgPSA/CiAgICAgICAgICAgIEFORCB2YWxpZF9pZCA9ID8KICAgICAgICAgICAgQU5EIGNyZWF0ZWRfYnkgPSA/CiAgICAgICAgICAgIEFORCBjaGFuZ2VkX2J5ID0gPyc7CgogICAgIyBoYW5kbGUgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnCiAgICAgICAgICAgIEFORCBmX3N1YmplY3QgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdGl0bGUgaXMgYW4gZW1wdHkgc3RyaW5nCiAgICAjIGFuZCB0aGUgZGF0YWJhc2UgaXMgb3JhY2xlLCB3aGljaCB0cmVhdHMgZW1wdHkgc3RyaW5ncyBhcyBOVUxMCiAgICBlbHNlIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgQU5EICgoZl9zdWJqZWN0ID0gPykgT1IgKGZfc3ViamVjdCBJUyBOVUxMKSkgJzsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUga2V5d29yZHMKICAgIGlmICggJFBhcmFte0tleXdvcmRzfSApIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgQU5EIGZfa2V5d29yZHMgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCBrZXl3b3JkcyBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBBTkQgKChmX2tleXdvcmRzID0gPykgT1IgKGZfa2V5d29yZHMgSVMgTlVMTCkpICc7CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBpZAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte051bWJlcn0sCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFwkUGFyYW17S2V5d29yZHN9LAogICAgICAgIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJElEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHVwZGF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N5c3RlbUlEJykgLiAnMDAnIC4gJElEOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJE51bWJlciwgXCRJRCBdLAogICAgKTsKCiAgICAjIGFkZCBoaXN0b3J5CiAgICAkU2VsZi0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIEl0ZW1JRCA9PiAkSUQsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92ZWR9ICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgYXBwcm92YWwgdGlja2V0CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJRCwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICBGQVFOdW1iZXIgID0+ICROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgU3RhdGVJRCAgICA9PiAkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBlcnJvcgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBjcmVhdGUgYXBwcm92YWwgdGlja2V0IScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2xlYW51cCB0aGUgY2FjaGUgZm9yICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnIGFuZCB0aGUgcnVudGltZSBjYWNoZS4KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcsCiAgICApOwoKICAgICMgQ2xlYW51cCB0aGUgcnVudGltZSBjYWNoZSBmcm9tIHRoZSBGQVEvQ2F0ZWdvcnkucG0uCiAgICBkZWxldGUgJFNlbGYtPntDYWNoZX07CgogICAgcmV0dXJuICRJRDsKfQoKPWl0ZW0gRkFRVXBkYXRlKCkKCnVwZGF0ZSBhbiBhcnRpY2xlCgogICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYW4nLCAgICAgIyBvciAndGV4dC9odG1sJwogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQXBwcm92YWxPZmYgPT4gMSwgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAoaWYgc2V0IHRvIDEgYXBwcm92YWwgaXMgaWdub3JlZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGltcG9ydGFudCB3aGVuIGNhbGxlZCBmcm9tIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUpCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhbid0IHVwZGF0ZSB0aGUgRkFRIGFydGljbGUKCj1jdXQKCnN1YiBGQVFVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFRpdGxlIFVzZXJJRCBDb250ZW50VHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IEZBUSBkYXRhCiAgICBteSAlRkFRRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBpZiBubyBuYW1lIHdhcyBnaXZlbiB1c2Ugb2xkIG5hbWUgZnJvbSBGQVEKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17TmFtZX0gPSAkRkFRRGF0YXtOYW1lfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlIGZvciBWYWxpZElECiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICAkUGFyYW17VmFsaWRJRH0gPSAkRkFRRGF0YXtWYWxpZElEfTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX2l0ZW0gU0VUCiAgICAgICAgICAgICAgICBmX25hbWUgPSA/LCBmX2xhbmd1YWdlX2lkID0gPywgZl9zdWJqZWN0ID0gPywgY2F0ZWdvcnlfaWQgPSA/LAogICAgICAgICAgICAgICAgc3RhdGVfaWQgPSA/LCBmX2tleXdvcmRzID0gPywgdmFsaWRfaWQgPSA/LCBjb250ZW50X3R5cGUgPSA/LAogICAgICAgICAgICAgICAgZl9maWVsZDEgPSA/LCBmX2ZpZWxkMiA9ID8sCiAgICAgICAgICAgICAgICBmX2ZpZWxkMyA9ID8sIGZfZmllbGQ0ID0gPywKICAgICAgICAgICAgICAgIGZfZmllbGQ1ID0gPywgZl9maWVsZDYgPSA/LAogICAgICAgICAgICAgICAgY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLAogICAgICAgICAgICAgICAgY2hhbmdlZF9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwgXCRQYXJhbXtUaXRsZX0sICAgXCRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtTdGF0ZUlEfSwgXCRQYXJhbXtLZXl3b3Jkc30sICAgXCRQYXJhbXtWYWxpZElEfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQxfSwgIFwkUGFyYW17RmllbGQyfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDN9LCAgXCRQYXJhbXtGaWVsZDR9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkNX0sICBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkU2VsZi0+X0RlbGV0ZUZyb21GQVFDYWNoZSglUGFyYW0pOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgdXBkYXRlIGFwcHJvdmFsCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZhbE9mZn0gKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpOwoKICAgICAgICAjIHNldCBhcHByb3ZhbCB0byAwIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmlnaHRzIHRvIGFwcHJvdmUKICAgICAgICBpZiAoICEkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKICAgICAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDA7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgYXBwcm92YWwKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTZWxmLT5fRkFRQXBwcm92YWxVcGRhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBBcHByb3ZlZCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgYXBwcm92YWwgZm9yIEl0ZW1JRCAkUGFyYW17SXRlbUlEfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY2FjaGUKICAgICAgICAkU2VsZi0+X0RlbGV0ZUZyb21GQVFDYWNoZSglUGFyYW0pOwogICAgfQoKICAgICMgY2hlY2sgaWYgaGlzdG9yeSBlbnRyeSBzaG91bGQgYmUgYWRkZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtIaXN0b3J5T2ZmfTsKCiAgICAjIHdyaXRlIGhpc3RvcnkgZW50cnkKICAgICRTZWxmLT5GQVFIaXN0b3J5QWRkKAogICAgICAgIE5hbWUgICA9PiAnVXBkYXRlZCcsCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKYWRkIGFydGljbGUgYXR0YWNobWVudHMsIHJldHVybnMgdGhlIGF0dGFjaG1lbnQgaWQKCiAgICBteSAkQXR0YWNobWVudElEID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnc29tZW5hbWUueG1sJywKICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICgwfDEsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEF0dGFjaG1lbnRJRCA9IDEyMyA7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCBhZGQgdGhlIGF0dGFjaG1lbnQKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDb250ZW50IENvbnRlbnRUeXBlIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIGlmICggISRQYXJhbXtJbmxpbmV9ICkgewogICAgICAgICRQYXJhbXtJbmxpbmV9ID0gMDsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50IHNpemUKICAgIHsKICAgICAgICB1c2UgYnl0ZXM7CiAgICAgICAgJFBhcmFte0ZpbGVzaXplfSA9IGxlbmd0aCAkUGFyYW17Q29udGVudH07CiAgICAgICAgbm8gYnl0ZXM7CiAgICB9CgogICAgIyBnZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICBteSBASW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBmaWxlbmFtZQogICAgbXkgJE5ld0ZpbGVOYW1lID0gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgYWxsIGV4aXN0aW5nIGZpbGUgbmFtZXMKICAgIG15ICVVc2VkRmlsZTsKICAgIGZvciBteSAkRmlsZSAoQEluZGV4KSB7CiAgICAgICAgJFVzZWRGaWxleyAkRmlsZS0+e0ZpbGVuYW1lfSB9ID0gMTsKICAgIH0KCiAgICAjIHRyeSB0byBtb2RpZnkgdGhlIHRoZSBmaWxlIG5hbWUgYnkgYWRkaW5nIGEgbnVtYmVyIGlmIGl0IGV4aXN0cyBhbHJlYWR5CiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCAkQ291bnQgPCA1MCApIHsKCiAgICAgICAgIyBpbmNyZWFzZSBjb3VudGVyCiAgICAgICAgJENvdW50Kys7CgogICAgICAgICMgaWYgdGhlIGZpbGUgbmFtZSBleGlzdHMKICAgICAgICBpZiAoIGV4aXN0cyAkVXNlZEZpbGV7JE5ld0ZpbGVOYW1lfSApIHsKCiAgICAgICAgICAgICMgZmlsZW5hbWUgaGFzIGEgZmlsZSBuYW1lIGV4dGVuc2lvbiAoZS5nLiB0ZXN0LmpwZykKICAgICAgICAgICAgaWYgKCAkUGFyYW17RmlsZW5hbWV9ID1+IG17IFxBICguKikgXC4gKC4rPykgXHogfXhtcyApIHsKICAgICAgICAgICAgICAgICROZXdGaWxlTmFtZSA9ICIkMS0kQ291bnQuJDIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiRQYXJhbXtGaWxlbmFtZX0tJENvdW50IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIHRoZSBuZXcgZmlsZW5hbWUKICAgICRQYXJhbXtGaWxlbmFtZX0gPSAkTmV3RmlsZU5hbWU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGVuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQhISEKICAgIGlmICggISREQk9iamVjdC0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyktPkVuY29kZU91dHB1dCggXCRQYXJhbXtDb250ZW50fSApOwoKICAgICAgICAkUGFyYW17Q29udGVudH0gPSBNSU1FOjpCYXNlNjQ6OmVuY29kZV9iYXNlNjQoICRQYXJhbXtDb250ZW50fSApOwogICAgfQoKICAgICMgd3JpdGUgYXR0YWNobWVudCB0byBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2F0dGFjaG1lbnQgJyAuCiAgICAgICAgICAgICcgKGZhcV9pZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50LCBpbmxpbmVhdHRhY2htZW50LCAnIC4KICAgICAgICAgICAgJyBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KSBWQUxVRVMgJyAuCiAgICAgICAgICAgICcgKD8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sICBcJFBhcmFte0ZpbGVuYW1lfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sIFwkUGFyYW17RmlsZXNpemV9LAogICAgICAgICAgICBcJFBhcmFte0NvbnRlbnR9LCBcJFBhcmFte0lubGluZX0sICAgXCRQYXJhbXtVc2VySUR9LCAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgYXR0YWNobWVudCBpZAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX2lkID0gPyBBTkQgZmlsZW5hbWUgPSA/ICcKICAgICAgICAgICAgLiAnQU5EIGNvbnRlbnRfdHlwZSA9ID8gQU5EIGNvbnRlbnRfc2l6ZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgaW5saW5lYXR0YWNobWVudCA9ID8gJwogICAgICAgICAgICAuICdBTkQgY3JlYXRlZF9ieSA9ID8gQU5EIGNoYW5nZWRfYnkgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0ZpbGVuYW1lfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sIFwkUGFyYW17RmlsZXNpemV9LAogICAgICAgICAgICBcJFBhcmFte0lubGluZX0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBdHRhY2htZW50SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQXR0YWNobWVudElEOwp9Cgo9aXRlbSBBdHRhY2htZW50R2V0KCkKCmdldCBhdHRhY2htZW50IG9mIGFydGljbGUKCiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGaWxlID0gKAogICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGJpbmFyeSBjb250ZW50CiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIEZpbGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGNyZWF0ZWQnLAogICAgICAgIEJpbmQgICA9PiBbIFwkUGFyYW17RmlsZUlEfSwgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgRW5jb2RlID0+IFsgMSwgMSwgMSwgMCBdLAogICAgICAgIExpbWl0ICA9PiAxLAogICAgKTsKCiAgICBteSAlRmlsZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGRlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQgYW5kIG5vdCBCTE9CCiAgICAgICAgaWYgKCAhJERCT2JqZWN0LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgICAgICRSb3dbM10gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRSb3dbM10gKTsKICAgICAgICB9CgogICAgICAgICRGaWxle0ZpbGVuYW1lfSAgICA9ICRSb3dbMF07CiAgICAgICAgJEZpbGV7Q29udGVudFR5cGV9ID0gJFJvd1sxXTsKICAgICAgICAkRmlsZXtGaWxlc2l6ZX0gICAgPSAkUm93WzJdOwogICAgICAgICRGaWxle0NvbnRlbnR9ICAgICA9ICRSb3dbM107CiAgICB9CgogICAgcmV0dXJuICVGaWxlOwp9Cgo9aXRlbSBBdHRhY2htZW50RGVsZXRlKCkKCmRlbGV0ZSBhdHRhY2htZW50IG9mIGFydGljbGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMSA7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGF0dGFjaG1lbnQgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBBdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfYXR0YWNobWVudCBXSEVSRSBpZCA9ID8gQU5EIGZhcV9pZCA9ID8gJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRJbmRleCgpCgpyZXR1cm4gYW4gYXR0YWNobWVudCBpbmRleCBvZiBhbiBhcnRpY2xlCgogICAgbXkgQEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwgICAoIDB8MSwgZGVmYXVsdCAxKQogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJbmRleCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICc1MjcuNiBLQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdFcnJvci5qcGcnLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiA1NDAyODYsCiAgICAgICAgICAgIEZpbGVJRCAgICAgID0+IDYsCiAgICAgICAgICAgIElubGluZSAgICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICB7LAogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnNDMwLjAgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnU29sdXRpb24uanBnJywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNDQwMjg2LAogICAgICAgICAgICBGaWxlSUQgPT4gNSwKICAgICAgICAgICAgSW5saW5lID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpbGVzaXplID0+ICcyOTYgQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdBZGRpdGlvbmFsQ29tbWVudHMudHh0JywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gMjk2LAogICAgICAgICAgICBGaWxlSUQgPT4gNywKICAgICAgICAgICAgSW5saW5lID0+IDAsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEluZGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIGZpbGVuYW1lLCBjb250ZW50X3R5cGUsIGNvbnRlbnRfc2l6ZSwgaW5saW5lYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBmYXFfaWQgPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgZmlsZW5hbWUnLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMTAwLAogICAgKTsKCiAgICBteSBASW5kZXg7CiAgICBBVFRBQ0hNRU5UOgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRJRCAgICAgICAgICA9ICRSb3dbMF07CiAgICAgICAgbXkgJEZpbGVuYW1lICAgID0gJFJvd1sxXTsKICAgICAgICBteSAkQ29udGVudFR5cGUgPSAkUm93WzJdOwogICAgICAgIG15ICRGaWxlc2l6ZSAgICA9ICRSb3dbM107CiAgICAgICAgbXkgJElubGluZSAgICAgID0gJFJvd1s0XTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBpbmxpbmUgYXR0YWNobWVudHMKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte1Nob3dJbmxpbmV9ICYmICEkUGFyYW17U2hvd0lubGluZX0gJiYgJElubGluZSApIHsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IHRvIGh1bWFuIHJlYWRhYmxlIGZpbGUgc2l6ZQogICAgICAgIG15ICRGaWxlU2l6ZVJhdyA9ICRGaWxlc2l6ZTsKICAgICAgICBpZiAoJEZpbGVzaXplKSB7CiAgICAgICAgICAgIGlmICggJEZpbGVzaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAgICAgICAgICAgICAgJEZpbGVzaXplID0gc3ByaW50ZiAiJS4xZiBNQnl0ZXMiLCAoICRGaWxlc2l6ZSAvICggMTAyNCAqIDEwMjQgKSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbGVzaXplID4gMTAyNCApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgS0J5dGVzIiwgKCAoICRGaWxlc2l6ZSAvIDEwMjQgKSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEZpbGVzaXplID0gJEZpbGVzaXplIC4gJyBCeXRlcyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQEluZGV4LCB7CiAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRJRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICRGaWxlc2l6ZSwKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gJEZpbGVTaXplUmF3LAogICAgICAgICAgICBJbmxpbmUgICAgICA9PiAkSW5saW5lLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIEBJbmRleDsKfQoKPWl0ZW0gRkFRQ291bnQoKQoKQ291bnQgdGhlIG51bWJlciBvZiBhcnRpY2xlcyBmb3IgYSBkZWZpbmVkIGNhdGVnb3J5LiBPbmx5IHZhbGlkIEZBUSBhcnRpY2xlcyB3aWxsIGJlIGNvdW50ZWQuCgogICAgbXkgJEFydGljbGVDb3VudCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgICAgIENhdGVnb3J5SURzID0+IFsxLDIsMyw0XSwKICAgICAgICBJdGVtU3RhdGVzID0+ICB7CiAgICAgICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAgICAgMiA9PiAnZXh0ZXJuYWwnLAogICAgICAgICAgICAzID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgT25seUFwcHJvdmVkID0+IDEsICAgIyBvcHRpb25hbCAoZGVmYXVsdCAwKQogICAgICAgIFZhbGlkICAgICAgICA9PiAxLCAgICMgb3B0aW9uYWwgKGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRBcnRpY2xlQ291bnQgPSAzOwoKPWN1dAoKc3ViIEZBUUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SURzIEl0ZW1TdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlCiAgICBteSAkVmFsaWQgPSAkUGFyYW17VmFsaWR9ID8gMSA6IDA7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkQ2F0ZWdvcnlJRFN0cmluZyA9ICcnOwogICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRHN9ICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIGNhdGVnb3J5IGlkcwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkREJPYmplY3QtPlF1b3RlKCAkQ2F0ZWdvcnlJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICBteSBAU29ydGVkSURzID0gc29ydCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgICAgICMgc3BsaXQgSU4gc3RhdGVtZW50IHdpdGggbW9yZSB0aGFuIDkwMCBlbGVtZW50cyBpbiBtb3JlIHN0YXRlbWVudHMgY29tYmluZWQgd2l0aCBPUgogICAgICAgICMgYmVjYXVzZSBPcmFjbGUgZG9lc24ndCBzdXBwb3J0IG1vcmUgdGhhbiAxMDAwIGVsZW1lbnRzIGluIG9uZSBJTiBzdGF0ZW1lbnQuCiAgICAgICAgbXkgQFNRTFN0cmluZ3M7CiAgICAgICAgTE9PUDoKICAgICAgICB3aGlsZSAoIHNjYWxhciBAU29ydGVkSURzICkgewoKICAgICAgICAgICAgbXkgQFNvcnRlZElEc1BhcnQgPSBzcGxpY2UgQFNvcnRlZElEcywgMCwgOTAwOwoKICAgICAgICAgICAgbXkgJElEU3RyaW5nID0gam9pbiAnLCcsIEBTb3J0ZWRJRHNQYXJ0OwoKICAgICAgICAgICAgcHVzaCBAU1FMU3RyaW5ncywgIiBpLmNhdGVnb3J5X2lkIElOICgkSURTdHJpbmcpICI7CiAgICAgICAgfQoKICAgICAgICBteSAkU1FMU3RyaW5nID0gam9pbiAnIE9SICcsIEBTUUxTdHJpbmdzOwoKICAgICAgICAkQ2F0ZWdvcnlJRFN0cmluZyAuPSAnQU5EICggJyAuICRTUUxTdHJpbmcgLiAnICkgJzsKICAgIH0KCiAgICAjIGJ1aWxkIHZhbGlkIGlkIHN0cmluZwogICAgbXkgJFZhbGlkSURzU3RyaW5nOwogICAgaWYgKCRWYWxpZCkgewogICAgICAgICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywga2V5cyAlVmFsaWRMaXN0OwogICAgfQoKICAgIG15ICRTUUwgPSAnU0VMRUNUIENPVU5UKCopICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzICcKICAgICAgICAuICdXSEVSRSBpLnN0YXRlX2lkID0gcy5pZCAnCiAgICAgICAgLiAiQU5EIGkudmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykgIgogICAgICAgIC4gJENhdGVnb3J5SURTdHJpbmc7CgogICAgIyBjb3VudCBvbmx5IGFwcHJvdmVkIGFydGljbGVzCiAgICBpZiAoICRQYXJhbXtPbmx5QXBwcm92ZWR9ICkgewogICAgICAgICRTUUwgLj0gJyBBTkQgaS5hcHByb3ZlZCA9IDEnOwogICAgfQoKICAgIG15ICRFeHQgPSAnJzsKICAgIGlmICggJFBhcmFte0l0ZW1TdGF0ZXN9ICYmIHJlZiAkUGFyYW17SXRlbVN0YXRlc30gZXEgJ0hBU0gnICYmICV7ICRQYXJhbXtJdGVtU3RhdGVzfSB9ICkgewogICAgICAgIG15ICRTdGF0ZXNTdHJpbmcgPSBqb2luICcsICcsIGtleXMgJXsgJFBhcmFte0l0ZW1TdGF0ZXN9IH07CiAgICAgICAgJEV4dCAuPSAiIEFORCBzLnR5cGVfaWQgSU4gKCRTdGF0ZXNTdHJpbmcgKSI7CiAgICB9CiAgICAkRXh0IC49ICcgR1JPVVAgQlkgY2F0ZWdvcnlfaWQnOwogICAgJFNRTCAuPSAkRXh0OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMjAwLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ICs9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKPWl0ZW0gRkFRRGVsZXRlKCkKCkRlbGV0ZSBhbiBhcnRpY2xlLgoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFydGljbGUgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBGQVFEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIGF0dGFjaG1lbnRzCiAgICBteSBASW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgZm9yIG15ICRGaWxlSUQgKEBJbmRleCkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRmlsZUlEID0+ICRGaWxlSUQtPntGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkRGVsZXRlU3VjY2VzczsKICAgIH0KCiAgICAjIGRlbGV0ZSB2b3RlcwogICAgbXkgJFZvdGVJRHNSZWYgPSAkU2VsZi0+Vm90ZVNlYXJjaCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGZvciBteSAkVm90ZUlEICggQHskVm90ZUlEc1JlZn0gKSB7CiAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkU2VsZi0+Vm90ZURlbGV0ZSgKICAgICAgICAgICAgVm90ZUlEID0+ICRWb3RlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgISREZWxldGVTdWNjZXNzOwogICAgfQoKICAgICMgZGVsZXRlIGFsbCBGQVEgbGlua3Mgb2YgdGhpcyBGQVEgYXJ0aWNsZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICBPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgcmV0dXJuIGlmICEkU2VsZi0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBhcnRpY2xlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUUhpc3RvcnlBZGQoKQoKYWRkIGFuIGhpc3RvcnkgdG8gYW4gYXJ0aWNsZQoKICAgIG15ICRBZGRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJ1VwZGF0ZWQgQXJ0aWNsZS4nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFkZFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXJ0aWNsZSBoaXN0b3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIEZBUUhpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIE5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfaGlzdG9yeSAobmFtZSwgaXRlbV9pZCwgJyAuCiAgICAgICAgICAgICcgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSknIC4KICAgICAgICAgICAgJyBWQUxVRVMgKCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gRkFRSGlzdG9yeUdldCgpCgpnZXQgYW4gYXJyYXkgd2l0aCBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSBoaXN0b3J5IG9mIGFuIGFydGljbGUKCiAgICBteSAkSGlzdG9yeURhdGFBcnJheVJlZiA9ICRGQVFPYmplY3QtPkZBUUhpc3RvcnlHZXQoCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkSGlzdG9yeURhdGFBcnJheVJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAxLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTAtMTEtMDIgMDc6NDU6MTUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDcmVhdGVkQnkgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTA2LTE0IDEyOjUzOjU1JywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICdVcGRhdGVkJywKICAgICAgICB9LAogICAgXTsKCj1jdXQKCnN1YiBGQVFIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBjcmVhdGVkLCBjcmVhdGVkX2J5CiAgICAgICAgICAgIEZST00gZmFxX2hpc3RvcnkKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlZCwgaWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgbXkgQERhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlUmVjb3JkID0gKAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzJdLAogICAgICAgICk7CiAgICAgICAgcHVzaCBARGF0YSwgXCVSZWNvcmQ7CiAgICB9CgogICAgcmV0dXJuIFxARGF0YTsKfQoKPWl0ZW0gRkFRSGlzdG9yeURlbGV0ZSgpCgpkZWxldGUgdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVEdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBoaXN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfaGlzdG9yeSBXSEVSRSBpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gSGlzdG9yeUdldCgpCgpnZXQgdGhlIHN5c3RlbSBoaXN0b3J5CgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzMyJywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJ05ldyBBcnRpY2xlJywKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICc0JywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIk5ldyBBcnRpY2xlIiwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdVcGRhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjU1OjMyJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYnVpbGQgU1FMIHF1ZXJ5CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBoLm5hbWUsIGguY3JlYXRlZCwgaC5jcmVhdGVkX2J5LCBjLm5hbWUsIGkuZl9zdWJqZWN0LCBpLmZfbnVtYmVyICcKICAgICAgICAuICdGUk9NIGZhcV9pdGVtIGksIGZhcV9zdGF0ZSBzLCBmYXFfaGlzdG9yeSBoLCBmYXFfY2F0ZWdvcnkgYyAnCiAgICAgICAgLiAnV0hFUkUgcy5pZCA9IGkuc3RhdGVfaWQgJwogICAgICAgIC4gJ0FORCBoLml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdBTkQgaS5jYXRlZ29yeV9pZCA9IGMuaWQgJzsKCiAgICAjIGFkZCBzdGF0ZXMgY29uZGl0aW9uCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CiAgICAgICAgbXkgJFN0YXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1N0YXRlc30gfTsKICAgICAgICAkU1FMIC49ICJBTkQgcy5uYW1lIElOICgkU3RhdGVzU3RyaW5nKSAiOwogICAgfQoKICAgICMgYWRkIG9yZGVyIGJ5IGNsYXVzZQogICAgJFNRTCAuPSAnT1JERVIgQlkgaC5jcmVhdGVkIERFU0MnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdGhlIGRhdGEgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAyMDAsCiAgICApOwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVJlY29yZCA9ICgKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbM10sCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkUm93WzRdLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFJvd1s1XSwKICAgICAgICAgICAgTnVtYmVyICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aXRlbSBLZXl3b3JkTGlzdCgpCgpUT0RPOiBGdW5jdGlvbiBub3QgdXNlZD8gS2V5d29yZCBzZXBlcmF0b3IgaXMgaGVyZSBhIG90aGVyIGFzIGF0IG90aGVyIHBsYWNlcy4uLgpUT0RPOiBDbGFyaWZ5IC0gUmVtb3ZlIGZ1bmN0aW9uIG9yIGNoYW5nZSB0aGUgc2VwZXJhdG9yPwoKZ2V0IGEgbGlzdCBvZiBrZXl3b3JkcyBhcyBhIGhhc2gsIHdpdGggdGhlaXIgY291bnQgYXMgdGhlIHZhbHVlOgoKICAgIG15ICVLZXl3b3JkcyA9ICRGQVFPYmplY3QtPktleXdvcmRMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUtleXdvcmRzID0gKAogICAgICAgICAgJ21hY29zeCcgICA9PiA4LAogICAgICAgICAgJ3VidW50dScgICA9PiAxLAogICAgICAgICAgJ291dGxvb2snICA9PiAyLAogICAgICAgICAgJ3dpbmRvd3MnICA9PiAzLAogICAgICAgICAgJ2V4Y2hhbmdlJyA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBLZXl3b3JkTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQga2V5d29yZHMgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZl9rZXl3b3JkcyBGUk9NIGZhcV9pdGVtJywKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgbXkgJEtleXdvcmRMaXN0ID0gbGMgJFJvd1swXTsKCiAgICAgICAgZm9yIG15ICRLZXl3b3JkICggc3BsaXQgLywvLCAkS2V5d29yZExpc3QgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBsZWFkaW5nL3RhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICRLZXl3b3JkID1+IHN7IFxBIFxzKyB9e314bXNnOwogICAgICAgICAgICAkS2V5d29yZCA9fiBzeyBccysgXHogfXt9eG1zZzsKCiAgICAgICAgICAgICMgaW5jcmVhc2Uga2V5d29yZCBjb3VudGVyCiAgICAgICAgICAgICREYXRheyRLZXl3b3JkfSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0KCkKCkdldCBhIGtleXdvcmQgYW5kIHJlbGF0ZWQgZmFxIGFydGljbGVzIGxvb2t1cCBsaXN0IChvcHRpb25hbCBvbmx5IGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2VzKS4KQXQgdGhlIG1vbWVudCBvbmx5IGZvciB0aGUgaW50ZXJmYWNlICdleHRlcm5hbCcgKHRvIHVzZSBvbmx5IGFwcHJvdmVkIGFydGljbGUpIGFuZCB0aGUKY3VzdG9tZXIgc3RhdGUgdHlwZXMgKG1heWJlIGltcHJvdmUgdGhpcyBsYXRlcikuCgogICAgbXkgJUZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+RkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0dCcsCiAgICAgICAgTGFuZ3VhZ2VzICAgID0+IFsgJ2VuJywgJ2RlJyBdLCAjIG9wdGlvbmFsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgIG15ICVGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9ICgKICAgICAgICAnRXhhbXBsZUtleXdvcmQnID0+IFsKICAgICAgICAgICAgMTIsCiAgICAgICAgICAgIDEzLAogICAgICAgIF0sCiAgICAgICAgJ1Rlc3RLZXl3b3JkJyA9PiBbCiAgICAgICAgICAgIDg3NiwKICAgICAgICBdLAogICAgKTsKCj1jdXQKCnN1YiBGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15IEBMYW5ndWFnZUlEczsKCiAgICBMQU5HVUFHRU5BTUU6CiAgICBmb3IgbXkgJExhbmd1YWdlTmFtZSAoIEB7ICRQYXJhbXtMYW5ndWFnZXN9IH0gKSB7CiAgICAgICAgbmV4dCBMQU5HVUFHRU5BTUUgaWYgISRMYW5ndWFnZU5hbWU7CgogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRMYW5ndWFnZU5hbWUsCiAgICAgICAgKTsKICAgICAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAkTGFuZ3VhZ2VJRDsKICAgIH0KCiAgICBteSAkQ3VzdG9tZXJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBNb2RlICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRDdXN0b21lckNhdGVnb3J5SURzKTsKCiAgICBteSAkQ2FjaGVLZXkgPSAnRkFRS2V5d29yZEFydGljbGVMaXN0JzsKCiAgICBpZiAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICc6Okxhbmd1YWdlJyAuIGpvaW4gJzo6JywgQExhbmd1YWdlSURzOwogICAgfQogICAgJENhY2hlS2V5IC49ICc6OkNhdGVnb3J5SURzJyAuIGpvaW4gJzo6JywgQHskQ3VzdG9tZXJDYXRlZ29yeUlEc307CgogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAleyRDYWNoZX0gaWYgJENhY2hlOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICVGQVFTZWFyY2hQYXJhbWV0ZXI7CgogICAgIyBTZXQgaW50ZXJmYWNlIHNldHRpbmcgdG8gJ2V4dGVybmFsJywgdG8gc2VhcmNoIG9ubHkgZm9yIGFwcHJvdmVkIGZhcSBhcnRpY2xlLgogICAgJEZBUVNlYXJjaFBhcmFtZXRlcntJbnRlcmZhY2V9ID0gJFNlbGYtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICRGQVFTZWFyY2hQYXJhbWV0ZXJ7U3RhdGVzfSA9ICRTZWxmLT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRTZWFyY2hMaW1pdCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpLZXl3b3JkQXJ0aWNlTGlzdDo6U2VhcmNoTGltaXQnKTsKCiAgICBpZiAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgJEZBUVNlYXJjaFBhcmFtZXRlcntMYW5ndWFnZUlEc30gPSBcQExhbmd1YWdlSURzOwogICAgfQoKICAgICMgR2V0IHRoZSByZWxldmFudCBGQVEgYXJ0aWNsZSBmb3IgdGhlIGN1cnJlbnQgY3VzdG9tZXIgdXNlci4KICAgIG15IEBGQVFBcnRpY2xlSURzID0gJFNlbGYtPkZBUVNlYXJjaCgKICAgICAgICAlRkFRU2VhcmNoUGFyYW1ldGVyLAogICAgICAgIENhdGVnb3J5SURzICAgICAgPT4gJEN1c3RvbWVyQ2F0ZWdvcnlJRHMsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0ZBUUlEJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICVLZXl3b3JkQXJ0aWNlTGlzdDsKICAgIG15ICVMb29rdXBLZXl3b3JkQXJ0aWNsZUlEOwoKICAgIEZBUUFSVElDTEVJRDoKICAgIGZvciBteSAkRkFRQXJ0aWNsZUlEIChARkFRQXJ0aWNsZUlEcykgewoKICAgICAgICBteSAlRkFRQXJ0aWNsZURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUFydGljbGVJRCwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRkFRQVJUSUNMRUlEIGlmICEkRkFRQXJ0aWNsZURhdGF7S2V5d29yZHN9OwoKICAgICAgICAjIFJlcGxhY2UgY29tbWFzIGFuZCBzZW1pY29sb25zLCBiZWNhdXNlIHRoZSBrZXl3b3JkcyBhcmUgbm9ybWFsIHNwbGl0IHdpdGggYW4gd2hpdGVzcGFjZS4KICAgICAgICAkRkFRQXJ0aWNsZURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUUFydGljbGVEYXRhe0tleXdvcmRzfSA9fiBzLzsvIC9nOwoKICAgICAgICBteSBAS2V5d29yZHMgPSBzcGxpdCAvXHMrLywgbGMgJEZBUUFydGljbGVEYXRhe0tleXdvcmRzfTsKCiAgICAgICAgS0VZV09SRDoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewoKICAgICAgICAgICAgbmV4dCBLRVlXT1JEIGlmICRMb29rdXBLZXl3b3JkQXJ0aWNsZUlEeyRLZXl3b3JkfS0+eyRGQVFBcnRpY2xlSUR9OwoKICAgICAgICAgICAgcHVzaCBAeyAkS2V5d29yZEFydGljZUxpc3R7JEtleXdvcmR9IH0sICRGQVFBcnRpY2xlSUQ7CgogICAgICAgICAgICAkTG9va3VwS2V5d29yZEFydGljbGVJRHskS2V5d29yZH0tPnskRkFRQXJ0aWNsZUlEfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlS2V5d29yZEFydGljZUxpc3QsCiAgICAgICAgVFRMICAgPT4gNjAgKiA2MCAqIDMsCiAgICApOwoKICAgIHJldHVybiAlS2V5d29yZEFydGljZUxpc3Q7Cn0KCj1pdGVtIEZBUVBhdGhMaXN0R2V0KCkKCnJldHVybnMgYSBjYXRlZ29yeSBhcnJheSByZWZlcmVuY2UKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+RkFRUGF0aExpc3RHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxNTAsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJzInLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAnMCcsCiAgICAgICAgICAgIE5hbWUgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAgICAgQ29tbWVudCA9PiAnTXkgRmlyc3QgQ2F0ZWdvcnknLAogICAgICAgICAgICBWYWxpZElEID0+ICcxJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAnNCcsCiAgICAgICAgICAgIFBhcmVudElEID0+ICcyJywKICAgICAgICAgICAgTmFtZSA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICBDb21tZW50ID0+ICdUaGlzIElzIENhdGVnb3J5IEEnLAogICAgICAgICAgICBWYWxpZElEID0+ICcxJywKICAgICAgICB9LAogICAgXTsKCj1jdXQKCnN1YiBGQVFQYXRoTGlzdEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBDYXRlZ29yeUxpc3Q7CiAgICBteSAkVGVtcENhdGVnb3J5SUQgPSAkUGFyYW17Q2F0ZWdvcnlJRH07CiAgICB3aGlsZSAoJFRlbXBDYXRlZ29yeUlEKSB7CiAgICAgICAgbXkgJURhdGEgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFRlbXBDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVEYXRhKSB7CiAgICAgICAgICAgIHB1c2ggQENhdGVnb3J5TGlzdCwgXCVEYXRhOwogICAgICAgIH0KICAgICAgICAkVGVtcENhdGVnb3J5SUQgPSAkRGF0YXtQYXJlbnRJRH07CiAgICB9CgogICAgQENhdGVnb3J5TGlzdCA9IHJldmVyc2UgQENhdGVnb3J5TGlzdDsKCiAgICByZXR1cm4gXEBDYXRlZ29yeUxpc3Q7Cgp9Cgo9aXRlbSBGQVFMb2dBZGQoKQoKYWRkcyBhY2Nlc3NlZCBGQVEgYXJ0aWNsZSB0byB0aGUgYWNjZXNzIGxvZyB0YWJsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0xOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIEZBUUxvZyBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBGQVFMb2dBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICAgIG15ICRJUCAgICAgICAgPSAkRU5WeydSRU1PVEVfQUREUid9ICAgICB8fCAnTk9ORSc7CiAgICBteSAkVXNlckFnZW50ID0gJEVOVnsnSFRUUF9VU0VSX0FHRU5UJ30gfHwgJ05PTkUnOwoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyk7CgogICAgIyBnZXQgY3VycmVudCBzeXN0ZW0gdGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwoKICAgICMgZGVmaW5lIHRpbWUgcGVyaW9kIHdoZXJlIHJlbG9hZHMgd2lsbCBub3QgYmUgbG9nZ2VkICgxMCBtaW51dGVzKQogICAgbXkgJFJlbG9hZEJsb2NrVGltZSA9IDEwICogNjA7CgogICAgIyBzdWJ0cmFjdCBSZWxvYWRCbG9ja1RpbWUKICAgICRTeXN0ZW1UaW1lID0gJFN5c3RlbVRpbWUgLSAkUmVsb2FkQmxvY2tUaW1lOwoKICAgICMgY29udmVydCB0byB0aW1lcy1zdGFtcAogICAgbXkgJFRpbWVTdGFtcCA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICBTeXN0ZW1UaW1lID0+ICRTeXN0ZW1UaW1lLAogICAgKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgYSBsb2cgZW50cnkgZXhpc3RzIG5ld2VyIHRoYW4gdGhlIFJlbG9hZEJsb2NrVGltZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfbG9nICcKICAgICAgICAgICAgLiAnV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGlwID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCB1c2VyX2FnZW50ID0gPyBBTkQgY3JlYXRlZCA+PSA/ICcsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0sIFwkSVAsIFwkVXNlckFnZW50LCBcJFRpbWVTdGFtcCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFscmVhZHlFeGlzdHMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEFscmVhZHlFeGlzdHMgPSAxOwogICAgfQoKICAgIHJldHVybiBpZiAkQWxyZWFkeUV4aXN0czsKCiAgICAjIGluc2VydCBuZXcgbG9nIGVudHJ5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfbG9nICcKICAgICAgICAgICAgLiAnKGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIHVzZXJfYWdlbnQsIGNyZWF0ZWQpIFZBTFVFUyAnCiAgICAgICAgICAgIC4gJyg/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17SW50ZXJmYWNlfSwgXCRJUCwgXCRVc2VyQWdlbnQsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEZBUVRvcDEwR2V0KCkKClJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgdG9wIDEwIEZBUSBhcnRpY2xlIGlkcy4KCiAgICBteSAkVG9wMTBJRHNSZWYgPSAkRkFRT2JqZWN0LT5GQVFUb3AxMEdldCgKICAgICAgICBJbnRlcmZhY2UgICA9PiAncHVibGljJywKICAgICAgICBDYXRlZ29yeUlEcyA9PiBbIDEsIDIsIDMgXSwgICMgKG9wdGlvbmFsKSBPbmx5IHNob3cgdGhlIFRvcC0xMCBhcnRpY2xlcyBmcm9tIHRoZXNlIGNhdGVnb3JpZXMKICAgICAgICBMaW1pdCAgICAgICA9PiAxMCwgICAgICAgICAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDEwKQogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVG9wMTBJRHNSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxMywKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTU5LCAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZpc2l0cwogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNiwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNzgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA0LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiA1OSwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMjAsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI5LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdleHRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDExLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTgsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDksCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE2LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAyLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxNCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNiwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfQogICAgXTsKCj1jdXQKCnN1YiBGQVFUb3AxMEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgIyBwcmVwYXJlIFNRTAogICAgbXkgQEJpbmQ7CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpdGVtX2lkLCBjb3VudChpdGVtX2lkKSBhcyBpdGVtY291bnQsIGZhcV9zdGF0ZV90eXBlLm5hbWUsIGFwcHJvdmVkICcKICAgICAgICAuICdGUk9NIGZhcV9sb2csIGZhcV9pdGVtLCBmYXFfc3RhdGUsIGZhcV9zdGF0ZV90eXBlICcKICAgICAgICAuICdXSEVSRSBmYXFfbG9nLml0ZW1faWQgPSBmYXFfaXRlbS5pZCAnCiAgICAgICAgLiAnQU5EIGZhcV9pdGVtLnN0YXRlX2lkID0gZmFxX3N0YXRlLmlkICcKICAgICAgICAuICJBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykgIgogICAgICAgIC4gJ0FORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkICc7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbHRlciBqdXN0IGNhdGVnb3JpZXMgd2l0aCBhdCBsZWFzdCBybyBwZXJtaXNzaW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICREQk9iamVjdC0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgIG15IEBTb3J0ZWRJRHMgPSBzb3J0IEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfTsKCiAgICAgICAgIyBzcGxpdCBJTiBzdGF0ZW1lbnQgd2l0aCBtb3JlIHRoYW4gOTAwIGVsZW1lbnRzIGluIG1vcmUgc3RhdGVtZW50cyBjb21iaW5lZCB3aXRoIE9SCiAgICAgICAgIyBiZWNhdXNlIE9yYWNsZSBkb2Vzbid0IHN1cHBvcnQgbW9yZSB0aGFuIDEwMDAgZWxlbWVudHMgaW4gb25lIElOIHN0YXRlbWVudC4KICAgICAgICBteSBAU1FMU3RyaW5nczsKICAgICAgICBMT09QOgogICAgICAgIHdoaWxlICggc2NhbGFyIEBTb3J0ZWRJRHMgKSB7CgogICAgICAgICAgICBteSBAU29ydGVkSURzUGFydCA9IHNwbGljZSBAU29ydGVkSURzLCAwLCA5MDA7CgogICAgICAgICAgICBteSAkSURTdHJpbmcgPSBqb2luICcsJywgQFNvcnRlZElEc1BhcnQ7CgogICAgICAgICAgICBwdXNoIEBTUUxTdHJpbmdzLCAiIGZhcV9pdGVtLmNhdGVnb3J5X2lkIElOICgkSURTdHJpbmcpICI7CiAgICAgICAgfQoKICAgICAgICBteSAkU1FMU3RyaW5nID0gam9pbiAnIE9SICcsIEBTUUxTdHJpbmdzOwoKICAgICAgICAkU1FMIC49ICcgQU5EICggJyAuICRTUUxTdHJpbmcgLiAnICkgJzsKICAgIH0KCiAgICAjIGZpbHRlciByZXN1bHRzIGZvciBwdWJsaWMgYW5kIGN1c3RvbWVyIGludGVyZmFjZQogICAgaWYgKCAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdwdWJsaWMnICkgfHwgKCAkUGFyYW17SW50ZXJmYWNlfSBlcSAnZXh0ZXJuYWwnICkgKSB7CgogICAgICAgICMgb25seSBzaG93IGFwcHJvdmVkIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9pdGVtLmFwcHJvdmVkID0gMSAnOwoKICAgICAgICAjIG9ubHkgc2hvdyB0aGUgcHVibGljIGFydGljbGVzCiAgICAgICAgJFNRTCAuPSAiQU5EICggKCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycgQU5EIGZhcV9sb2cuaW50ZXJmYWNlID0gJ3B1YmxpYycgKSAiOwoKICAgICAgICAjIGN1c3RvbWVycyBjYW4gYWRkaXRpb25hbGx5IHNlZSB0aGUgZXh0ZXJuYWwgYXJ0aWNsZXMKICAgICAgICBpZiAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgICAgICRTUUwgLj0gIk9SICggZmFxX3N0YXRlX3R5cGUubmFtZSA9ICdleHRlcm5hbCcgQU5EIGZhcV9sb2cuaW50ZXJmYWNlID0gJ2V4dGVybmFsJyApICI7CiAgICAgICAgfQoKICAgICAgICAkU1FMIC49ICcpICc7CiAgICB9CgogICAgIyBmaWx0ZXIgcmVzdWx0cyBmb3IgZGVmaW5lZCB0aW1lIHBlcmlvZAogICAgaWYgKCAkUGFyYW17U3RhcnREYXRlfSAmJiAkUGFyYW17RW5kRGF0ZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnQU5EIGZhcV9sb2cuY3JlYXRlZCA+PSA/IEFORCBmYXFfbG9nLmNyZWF0ZWQgPD0gPyAnOwogICAgICAgIHB1c2ggQEJpbmQsICggXCRQYXJhbXtTdGFydERhdGV9LCBcJFBhcmFte0VuZERhdGV9ICk7CiAgICB9CgogICAgIyBjb21wbGV0ZSBTUUwgc3RhdGVtZW50CiAgICAkU1FMIC49ICdHUk9VUCBCWSBpdGVtX2lkLCBmYXFfc3RhdGVfdHlwZS5uYW1lLCBhcHByb3ZlZCAnCiAgICAgICAgLiAnT1JERVIgQlkgaXRlbWNvdW50IERFU0MnOwoKICAgICMgZ2V0IHRoZSB0b3AgMTAgYXJ0aWNsZSBpZHMgZnJvbSBkYXRhYmFzZQogICAgcmV0dXJuIFtdIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSB8fCAxMCwKICAgICk7CgogICAgbXkgQFJlc3VsdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlc3VsdCwgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ291bnQgICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkUm93WzJdLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIFxAUmVzdWx0Owp9Cgo9aXRlbSBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKCkKClVwZGF0ZXMgdGhlIFVSTHMgb2YgdXBsb2FkZWQgaW5saW5lIGF0dGFjaG1lbnRzLgoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyLAogICAgICAgIEZvcm1JRCAgICAgPT4gNDU2LAogICAgICAgIEZpbGVJRCAgICAgPT4gNSwKICAgICAgICBBdHRhY2htZW50ID0+IFwlQXR0YWNobWVudCwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvZiB1bmRlZiBpZiBhdHRhY2htZW50IFVSTCBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIEF0dGFjaG1lbnQgRm9ybUlEIEZpbGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGF0dGFjaG1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZQogICAgaWYgKCByZWYgJFBhcmFte0F0dGFjaG1lbnR9IG5lICdIQVNIJyAmJiAhJXsgJFBhcmFte0F0dGFjaG1lbnR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBdHRhY2htZW50IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIG9ubHkgY29uc2lkZXIgaW5saW5lIGF0dGFjaG1lbnRzIGhlcmUgKHRoZXkgaGF2ZSBhIGNvbnRlbnQgaWQpCiAgICByZXR1cm4gMSBpZiAhJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudElEfTsKCiAgICAjIGdldCBGQVEgZGF0YQogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgcGljdHVyZSBVUkwgaW4gdXBsb2FkIGNhY2hlCiAgICBteSAkU2VhcmNoID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkIC4gRm9ybUlEPVxRJFBhcmFte0Zvcm1JRH1cRSAuICIKICAgICAgICAuICJDb250ZW50SUQ9XFEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9XEUiOwoKICAgICMgcGljdHVyZSBVUkwgaW4gRkFRIGF0dGFjaG1lbnQKICAgIG15ICRSZXBsYWNlID0gIkFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDsiCiAgICAgICAgLiAiSXRlbUlEPSRQYXJhbXtJdGVtSUR9O0ZpbGVJRD0kUGFyYW17RmlsZUlEfSI7CgogICAgIyByZXdyaXRlIHBpY3R1cmUgVVJMcwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBjb250YWlucyBzb21ldGhpbmcKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn07CgogICAgICAgICMgcmVtb3ZlIG5ld2xpbmVzCiAgICAgICAgJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9ID1+IHN7IFtcblxyXSsgfXt9Z3htczsKCiAgICAgICAgIyByZXBsYWNlIFVSTAogICAgICAgICRGQVFEYXRheyJGaWVsZCROdW1iZXIifSA9fiBzeyRTZWFyY2h9eyRSZXBsYWNlfXhtczsKICAgIH0KCiAgICAjIHVwZGF0ZSBGQVEgYXJ0aWNsZSB3aXRob3V0IHdyaXRpbmcgYSBoaXN0b3J5IGVudHJ5CiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5GQVFVcGRhdGUoCiAgICAgICAgJUZBUURhdGEsCiAgICAgICAgSGlzdG9yeU9mZiAgPT4gMSwKICAgICAgICBBcHByb3ZhbE9mZiA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIEZBUSBJdGVtIyAnJFBhcmFte0l0ZW1JRH0nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBGQVFBcnRpY2xlVGl0bGVDbGVhbigpCgpzdHJpcC9jbGVhbiB1cCBhIEZBUSBhcnRpY2xlIHRpdGxlCgogICAgbXkgJE5ld1RpdGxlID0gJEZBUU9iamVjdC0+RkFRQXJ0aWNsZVRpdGxlQ2xlYW4oCiAgICAgICAgVGl0bGUgICAgICA9PiAkT2xkVGl0bGUsCiAgICAgICAgU2l6ZSAgICAgICA9PiAkVGl0bGVTaXplVG9CZURpc3BsYXllZCAgICMgb3B0aW9uYWwsIGlmIDAgZG8gbm90IGN1dCB0aXRsZQogICAgKTsKCj1jdXQKCnN1YiBGQVFBcnRpY2xlVGl0bGVDbGVhbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUaXRsZSA9ICRQYXJhbXtUaXRsZX0gfHwgJyc7CgogICAgIyBnZXQgY29uZmlnIG9wdGlvbnMKICAgIG15ICRUaXRsZVNpemUgPSAkUGFyYW17U2l6ZX07CiAgICBpZiAoICFkZWZpbmVkICRUaXRsZVNpemUgKSB7CiAgICAgICAgJFRpdGxlU2l6ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpUaXRsZVNpemUnKSB8fCAxMDA7CiAgICB9CgogICAgIyB0cmltIHdoaXRlIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kCiAgICAkVGl0bGUgPX4gcy8oXlxzK3xccyskKS8vOwoKICAgICMgcmVzaXplIHRpdGxlIGJhc2VkIG9uIGNvbmZpZwogICAgIyBkbyBub3QgY3V0IHRpdGxlLCBpZiBzaXplIHBhcmFtZXRlciB3YXMgMAogICAgaWYgKCRUaXRsZVNpemUpIHsKICAgICAgICAkVGl0bGUgPX4gcy9eKC57JFRpdGxlU2l6ZX0pLiokLyQxIFsuLi5dLzsKICAgIH0KCiAgICByZXR1cm4gJFRpdGxlOwp9Cgo9aXRlbSBGQVFDb250ZW50VHlwZVNldCgpCgpTZXRzIHRoZSBjb250ZW50IHR5cGUgb2YgMSwgc29tZSBvciBhbGwgRkFRIGl0ZW1zLCBieSBhIGdpdmVuIHBhcmFtZXRlciBvciBkZXRlcm1pbmVkIGJ5IHRoZSBGQVEgaXRlbSBjb250ZW50CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFDb250ZW50VHlwZVNldCgKICAgICAgICBGQVFJdGVtSURzICA9PiBbIDEsIDIsIDMgXSwgICAgICAgICAgICAgIyBvcHRpb25hbCwKICAgICAgICBDb250ZW50VHlwZSA9PiAnc29tZSBjb250ZW50IHR5cGUnLCAgICAgIyBvcHRpb25hbCwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRQ29udGVudFR5cGVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRQYXJhbXtGQVFJdGVtSURzfSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RkFRSXRlbUlEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgRkFRSXRlbUlEcyBmb3JtYXQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBHZXQgY29uZmlnIG9iamVjdC4KICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb250ZW50VHlwZSA9ICRQYXJhbXtDb250ZW50VHlwZX0gfHwgJyc7CgogICAgIyBHZXQgZGVmYXVsdCBjb250ZW50IHR5cGUgZnJvbSB0aGUgY29uZmlnIGlmIGl0IHdhcyBub3QgZ2l2ZW4uCiAgICBpZiAoICEkQ29udGVudFR5cGUgKSB7CgogICAgICAgICRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0JykgJiYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKSApIHsKICAgICAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMIHRvIHNldCB0aGUgY29udGVudCB0eXBlIChkZWZhdWx0IG9yIGdpdmVuKS4KICAgIG15ICRTUUwgPSAnCiAgICAgICAgVVBEQVRFIGZhcV9pdGVtCiAgICAgICAgU0VUIGNvbnRlbnRfdHlwZSA9ID8nOwoKICAgICMgR2V0IEZBUSBpdGVtIElEcyBmcm9tIHRoZSBwYXJhbS4KICAgIG15IEBGQVFJdGVtSURzID0gQHsgJFBhcmFte0ZBUUl0ZW1JRHN9IC8vIFtdIH07CgogICAgIyBSZXN0cmljdCB0byBvbmx5IGdpdmVuIEZBUSBpdGVtIElEcyAoaWYgYW55KS4KICAgIGlmIChARkFRSXRlbUlEcykgewoKICAgICAgICBteSAkSURTdHJpbmcgPSBqb2luICcsJywgQEZBUUl0ZW1JRHM7CgogICAgICAgICRTUUwgLj0gIgogICAgICAgICAgICBXSEVSRSBpZCBJTiAoJElEU3RyaW5nKSI7CiAgICB9CgogICAgIyBHZXQgREIgb2JqZWN0LgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTZXQgdGhlIGNvbnRlbnQgdHlwZSBlaXRoZXIgYnkgdGhlIGdpdmVuIHBhcmFtIG9yIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHNldHRpbmdzLgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRDb250ZW50VHlwZSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIE5vIG5lZWQgdG8gZ28gZnVydGhlciBpZiBjb250ZW50IHR5cGUgd2FzIGdpdmVuIChpdCB3YXMgYWxyZWFkeSBzZXQpLgogICAgaWYgKCAkUGFyYW17Q29udGVudFR5cGV9ICkgewoKICAgICAgICAjIERlbGV0ZSBjYWNoZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgT3RoZXJ3aXNlIGNvbnRlbnQgdHlwZSBoYXMgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgRkFRIGl0ZW0gY29udGVudC4KCiAgICAjIEdldCBhbGwgRkFRSURzIChpZiBubyBmYXEgaXRlbSB3YXMgZ2l2ZW4pLgogICAgaWYgKCAhQEZBUUl0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgRElTVElOQ1QoZmFxX2l0ZW0uaWQpCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9pdGVtCiAgICAgICAgICAgICAgICBPUkRFUiBCWSBpZCBBU0MnLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBwdXNoIEBGQVFJdGVtSURzLCAkUm93WzBdOwogICAgICAgIH0KICAgIH0KCiAgICAjIExvb3AgdHJvdWdoIHRoZSBGQVEgaXRlbXMuCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEZBUUl0ZW1JRHMpIHsKICAgICAgICBteSAkRGV0ZXJtaW5lZENvbnRlbnRUeXBlID0gJ3RleHQvcGxhaW4nOwoKICAgICAgICAjIEdldCB0aGUgY29udGVudHMgb2YgZWFjaCBmaWVsZAogICAgICAgIEZJRUxEOgogICAgICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewoKICAgICAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRTZWxmLT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZENvbnRlbnQ7CgogICAgICAgICAgICAjIGlmIGZpZWxkIGNvbnRlbnQgc2VhbXMgdG8gYmUgSFRNTCBzZXQgdGhlIGNvbnRlbnQgdHlwZSB0byBIVE1MCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRGaWVsZENvbnRlbnQKICAgICAgICAgICAgICAgID1+IG17KD86IDxiclxzKi8+IHwgPC9saT4gfCA8L29sPiB8IDwvdWw+IHwgPC90YWJsZT4gfCA8L3RyPiB8IDwvdGQ+IHwgPC9kaXY+IHwgPC9vPiB8IDwvaT4gfCA8L3NwYW4+IHwgPC9oXGQ+IHwgPC9wPiB8IDwvcHJlPiApfW1zeAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRGV0ZXJtaW5lZENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICAgICAgICAgICAgICBsYXN0IEZJRUxEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0IElURU1JRCBpZiAkRGV0ZXJtaW5lZENvbnRlbnRUeXBlIGVxICRDb250ZW50VHlwZTsKCiAgICAgICAgIyBTZXQgdGhlIGNvbnRlbnQgdHlwZSBhY2NvcmRpbmcgdG8gdGhlIGZpZWxkIGNvbnRlbnQuCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIGZhcV9pdGVtCiAgICAgICAgICAgICAgICBTRVQgY29udGVudF90eXBlID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPT8nLAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFwkRGV0ZXJtaW5lZENvbnRlbnRUeXBlLAogICAgICAgICAgICAgICAgXCRJdGVtSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIERlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1pdGVtIF9GQVFBcHByb3ZhbFVwZGF0ZSgpCgp1cGRhdGUgdGhlIGFwcHJvdmFsIHN0YXRlIG9mIGFuIGFydGljbGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPl9GQVFBcHByb3ZhbFVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBBcHByb3ZlZCAgID0+IDEsICAgICMgMHwxIChkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfRkFRQXBwcm92YWxVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsb2cgb2JqZWN0CiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0FwcHJvdmVkfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEFwcHJvdmVkIHBhcmFtZXRlciEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHVwZGF0ZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUICcKICAgICAgICAgICAgLiAnYXBwcm92ZWQgPSA/LCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwgJwogICAgICAgICAgICAuICdjaGFuZ2VkX2J5ID0gPyAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGFwcHJvdmFsIGZlYXR1cmUgaXMgYWN0aXZhdGVkIGFuZCBGQVEgYXJ0aWNsZSBpcyBub3QgYXBwcm92ZWQgeWV0CiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZlZH0gKSB7CgogICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkRkFRRGF0YXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgRkFRTnVtYmVyICA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICBUaXRsZSAgICAgID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgU3RhdGVJRCAgICA9PiAkRkFRRGF0YXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGNyZWF0ZSBhcHByb3ZhbCB0aWNrZXQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgpCgpjcmVhdGVzIGFuIGFwcHJvdmFsIHRpY2tldAoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+X0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIENhdGVnb3J5SUQgPT4gMiwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgRkFRTnVtYmVyICA9PiAxMDIxMSwKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRpdGxlJywKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIENhdGVnb3J5SUQgRkFRTnVtYmVyIFRpdGxlIFN0YXRlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBzdWJqZWN0CiAgICBteSAkU3ViamVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFN1YmplY3QnKTsKICAgICRTdWJqZWN0ID1+IHN7IDxPVFJTX0ZBUV9OVU1CRVI+IH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwoKICAgICMgY2hlY2sgaWYgd2UgY2FuIGZpbmQgZXhpc3Rpbmcgb3BlbiBhcHByb3ZhbCB0aWNrZXRzIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICBteSBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgIFJlc3VsdCAgICA9PiAnQVJSQVknLAogICAgICAgIFRpdGxlICAgICA9PiAkU3ViamVjdCwKICAgICAgICBTdGF0ZVR5cGUgPT4gJ09wZW4nLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCiAgICAjIHdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgYXBwcm92YWwgdGlja2V0IGlmIHRoZXJlIGlzIHN0aWxsIGF0IGxlYXN0IG9uZSB0aWNrZXQgb3BlbgogICAgIyBmb3IgdGhpcyBGQVEgYXJ0aWNsZQogICAgcmV0dXJuIDEgaWYgQFRpY2tldElEczsKCiAgICAjIGdldCB0aWNrZXQgdHlwZSBmcm9tIFN5c0NvbmZpZwogICAgbXkgJFRpY2tldFR5cGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRUeXBlJykgfHwgJyc7CgogICAgIyB2YWxpZGF0ZSB0aWNrZXQgdHlwZSBpZiBhbnkKICAgIGlmICgkVGlja2V0VHlwZSkgewoKICAgICAgICAjIGdldCBhIHRpY2tldCB0eXBlIGxvb2t1cCB0YWJsZQogICAgICAgIG15ICVUeXBlTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKICAgICAgICBteSAlVHlwZUxvb2t1cCA9IHJldmVyc2UgJVR5cGVMaXN0OwoKICAgICAgICAjIHNldCAkVGlja2V0VHlwZSB0byBlbXB0eSBpZiBUaWNrZXlUeXBlIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbG9va3VwIHRhYmxlLiBJZiBzZXQgdG8KICAgICAgICAjICAgIGVtcHR5IFRpY2tldENyZWF0ZSgpIHdpbGwgdXNlIGFzIGRlZmF1bHQgVHlwZUlEID0gMSwgbm8gbWF0dGVyIGlmIGl0IGlzIHZhbGlkIG9yIG5vdC4KICAgICAgICAkVGlja2V0VHlwZSA9ICRUeXBlTG9va3VweyRUaWNrZXRUeXBlfSA/ICRUaWNrZXRUeXBlIDogJyc7CiAgICB9CgogICAgIyBjcmVhdGUgdGlja2V0CiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgPT4gJFN1YmplY3QsCiAgICAgICAgUXVldWUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnUmF3JywKICAgICAgICBMb2NrICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRQcmlvcml0eScpIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlJykgfHwgJ25ldycsCiAgICAgICAgVHlwZSAgICAgPT4gJFRpY2tldFR5cGUsCiAgICAgICAgT3duZXJJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICBpZiAoJFRpY2tldElEKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIGdldCBVc2VyTmFtZQogICAgICAgIG15ICRVc2VyTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IEZBUSBzdGF0ZQogICAgICAgIG15ICVTdGF0ZSA9ICRTZWxmLT5TdGF0ZUdldCgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjYXRlZ29yaWVzIGNhbiBiZSBuZXN0ZWQ7IHlvdSBjYW4gaGF2ZSBzb21lOjpsb25nOjpjYXRlZ29yeS4KICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRQYXJhbXtDYXRlZ29yeUlEfTsKICAgICAgICBDQVRFR09SWToKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkU2VsZi0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5e05hbWV9OwogICAgICAgICAgICBsYXN0IENBVEVHT1JZIGlmICEkQ2F0ZWdvcnl7UGFyZW50SUR9OwogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRDYXRlZ29yeXtQYXJlbnRJRH07CiAgICAgICAgfQogICAgICAgIG15ICRDYXRlZ29yeSA9IGpvaW4oICc6OicsIHJldmVyc2UgQENhdGVnb3J5TmFtZXMgKTsKCiAgICAgICAgbXkgJExhbmd1YWdlOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKSApIHsKICAgICAgICAgICAgJExhbmd1YWdlID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGFuZ3VhZ2UgPSAnLSc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBib2R5IGZyb20gY29uZmlnCiAgICAgICAgbXkgJEJvZHkgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRCb2R5Jyk7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0NBVEVHT1JZSUQ+IH17JFBhcmFte0NhdGVnb3J5SUR9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQ0FURUdPUlk+ICAgfXskQ2F0ZWdvcnl9eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9MQU5HVUFHRT4gICB9eyRMYW5ndWFnZX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0lURU1JRD4gICAgIH17JFBhcmFte0l0ZW1JRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9OVU1CRVI+ICAgICB9eyRQYXJhbXtGQVFOdW1iZXJ9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfVElUTEU+ICAgICAgfXskUGFyYW17VGl0bGV9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQVVUSE9SPiAgICAgfXskVXNlck5hbWV9eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9TVEFURT4gICAgICB9eyRTdGF0ZXtOYW1lfX14bXM7CgogICAgICAgICMgIGdhdGhlciB1c2VyIGRhdGEKICAgICAgICBteSAlVXNlciA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGZyb20gc3RyaW5nCiAgICAgICAgbXkgJEZyb20gPSAiXCIkVXNlcntVc2VyRmlyc3RuYW1lfSAkVXNlcntVc2VyTGFzdG5hbWV9XCIgPCRVc2Vye1VzZXJFbWFpbH0+IjsKCiAgICAgICAgIyBjcmVhdGUgYXJ0aWNsZQogICAgICAgIG15ICRBcnRpY2xlSUQgPSAkVGlja2V0T2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIEFydGljbGVUeXBlID0+ICdub3RlLWludGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgPT4gJ2FnZW50JywKICAgICAgICAgICAgRnJvbSAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgIFN1YmplY3QgICAgID0+ICRTdWJqZWN0LAogICAgICAgICAgICBCb2R5ICAgICAgICA9PiAkQm9keSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgPT4KICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXROb3RlJyktPntIaXN0b3J5VHlwZX0KICAgICAgICAgICAgICAgIHx8ICdBZGROb3RlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4KICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXROb3RlJyktPntIaXN0b3J5Q29tbWVudH0KICAgICAgICAgICAgICAgIHx8ICclJU5vdGUnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQXJ0aWNsZUlEOwogICAgfQoKICAgIHJldHVybjsKfQoKIwojIERlbGV0ZXMgYWxsIG5lZWRlZCBGQVEgaXRlbSBjYWNoZSBlbnRyaWVzIGZvciBhIGdpdmVuIEZBUSBJdGVtSUQuCiMKc3ViIF9EZWxldGVGcm9tRkFRQ2FjaGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgQ2xlYXIgRkFRR2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0gLiAnOjpJdGVtRmllbGRzOjoxJywKICAgICk7CiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0gLiAnOjpJdGVtRmllbGRzOjowJywKICAgICk7CgogICAgIyBDbGVhciBJdGVtRmVsZEdldCBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9LAogICAgKTsKCiAgICAjIENsZWFudXAgY2FjaGUgZm9yIHRoZSAnRkFRS2V5d29yZEFydGljbGVMaXN0Jy4KICAgICRDYWNoZU9iamVjdC0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1lbmQgSW50ZXJuYWw6Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RkFRU2VhcmNoIC0gRkFRIHNlYXJjaCBsaWIKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIEZBUSBzZWFyY2ggZnVuY3Rpb25zLgoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gRkFRU2VhcmNoKCkKCnNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMKCiAgICBteSBASURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAoKICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFRpdGxlICAgICA9PiAnKnNvbWUgdGl0bGUqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgaXMgc2VhcmNoaW5nIGluIE51bWJlciwgVGl0bGUsIEtleXdvcmQgYW5kIEZpZWxkMS02CiAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgS2V5d29yZCAgID0+ICcqd2Vic2VydmVyKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTdGF0ZXMgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAxID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyA3LCA4LCA5IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBWYWxpZElEcyAgICA9PiBbIDEsIDIsIDMgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAoZGVmYXVsdCAxKQoKICAgICAgICAjIEFwcHJvdmVkCiAgICAgICAgIyAgICBPbmx5IGF2YWlsYWJsZSBpbiBpbnRlcm5hbCBpbnRlcmZhY2UgKGFnZW50IGludGVyZmFjZSkKICAgICAgICBBcHByb3ZlZCAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAxIG9yIDAsCgogICAgICAgICMgVm90ZXMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzEyMywgNjU0XQogICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDEyMywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gMTIzLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAxMjMsCiAgICAgICAgfQoKICAgICAgICAjIFJhdGUKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzUwLCA3NV0KICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gNzUsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDc1LAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiA3NSwKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gNzUsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDc1LAogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgRkFRIGl0ZW0gcHJvcGVydGllcyAob3B0aW9uYWwpCiAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIGNoYW5nZSBGQVEgaXRlbSBwcm9wZXJ0aWVzIChvcHRpb25hbCkKICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkLWNhcmQgc3VwcG9ydAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgfQoKICAgICAgICAjIEZBUSBpdGVtcyBjcmVhdGVkIG1vcmUgdGhhbiA2MCBtaW51dGVzIGFnbyAoaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBGQVEgaXRlbSBjcmVhdGVkIGxlc3MgdGhhbiAxMjAgbWludXRlcyBhZ28gKGl0ZW0gbmV3ZXIgdGhhbiAxMjAgbWludXRlcykgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDEyMCwKCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGUgdGltZSBhZnRlciAuLi4gKGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBvbGRlciB0aGFuIHRoaXMgZGF0ZSkgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDA2LTAxLTE5IDIzOjU5OjU5JywKCiAgICAgICAgIyBGQVEgaXRlbXMgY2hhbmdlZCBtb3JlIHRoYW4gNjAgbWludXRlcyBhZ28gKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzID0+IDYwLAogICAgICAgICMgRkFRIGl0ZW1zIGNoYW5nZWQgbGVzcyB0aGFuIDEyMCBtaW51dGVzIGFnbyAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIEZBUSBpdGVtIHdpdGggY2hhbmdlZCB0aW1lIGFmdGVyIC4uLiAoaXRlbSBjaGFuZ2VkIG5ld2VyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgRkFRIGl0ZW0gd2l0aCBjaGFuZ2VkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBjaGFuZ2VkIG9sZGVyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRkFRSUQnIF0sCiAgICAgICAgIyAoRkFRSUQsIE51bWJlciwgVGl0bGUsIExhbmd1YWdlLCBDYXRlZ29yeSwgVmFsaWQsIENyZWF0ZWQsCiAgICAgICAgIyBDaGFuZ2VkLCBTdGF0ZSwgVm90ZXMsIFJlc3VsdCkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGV4ZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdVUCcgXQogICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgTGltaXQgICAgID0+IDE1MCwKCiAgICAgICAgSW50ZXJmYWNlID0+IHsgICAgICAgICAgICAgICMgKGRlZmF1bHQgaW50ZXJuYWwpCiAgICAgICAgICAgIFN0YXRlSUQgPT4gMywKICAgICAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywgICAgIyBwdWJsaWMgfCBleHRlcm5hbCB8IGludGVybmFsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJRHMgPSAoCiAgICAgICAgMzIsCiAgICAgICAgMTMsCiAgICAgICAgMTIsCiAgICAgICAgOSwKICAgICAgICA2LAogICAgICAgIDUsCiAgICAgICAgNCwKICAgICAgICAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZQogICAgaWYgKCAhJFBhcmFte0ludGVyZmFjZX0gfHwgISRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSA9ICdpbnRlcm5hbCc7CiAgICB9CgogICAgIyB2ZXJpZnkgdGhhdCBhbGwgcGFzc2VkIGFycmF5IHBhcmFtZXRlcnMgY29udGFpbiBhbiBhcnJheSByZWZlcmVuY2UKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT3JkZXJCeSBPcmRlckJ5RGlyZWN0aW9uKSkgewoKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkUGFyYW17JEFyZ3VtZW50fSB8fD0gW107CgogICAgICAgICAgICBuZXh0IEFSR1VNRU5UOwogICAgICAgIH0KCiAgICAgICAgaWYgKCByZWYgJFBhcmFteyRBcmd1bWVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRBcmd1bWVudCBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBvcmRlciB0YWJsZQogICAgbXkgJU9yZGVyQnlUYWJsZSA9ICgKCiAgICAgICAgIyBGQVEgaXRlbSBhdHRyaWJ1dGVzCiAgICAgICAgRkFRSUQgICAgPT4gJ2kuaWQnLAogICAgICAgIE51bWJlciAgID0+ICdpLmZfbnVtYmVyJywKICAgICAgICBUaXRsZSAgICA9PiAnaS5mX3N1YmplY3QnLAogICAgICAgIExhbmd1YWdlID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgIENhdGVnb3J5ID0+ICdpLmNhdGVnb3J5X2lkJywKICAgICAgICBWYWxpZCAgICA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgQ3JlYXRlZCAgPT4gJ2kuY3JlYXRlZCcsCiAgICAgICAgQ2hhbmdlZCAgPT4gJ2kuY2hhbmdlZCcsCgogICAgICAgICMgU3RhdGUgYXR0cmlidXRlcwogICAgICAgIFN0YXRlID0+ICdzLm5hbWUnLAoKICAgICAgICAjIFZvdGUgYXR0cmlidXRlcwogICAgICAgIFZvdGVzICA9PiAndm90ZXMnLAogICAgICAgIFJlc3VsdCA9PiAndnJhdGUnLAogICAgKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcXVvdGUgaWQgYXJyYXkgZWxlbWVudHMKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRLZXkgKHF3KExhbmd1YWdlSURzIENhdGVnb3J5SURzIFZhbGlkSURzIENyZWF0ZWRVc2VySURzIExhc3RDaGFuZ2VkVXNlcklEcykpIHsKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICEkUGFyYW17JEtleX07CgogICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRLZXl9ICkgKSB7CgogICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckS2V5JyBpcyBpbnZhbGlkIG9yIGFuIGVtcHR5IGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBxdW90ZSBlbGVtZW50cwogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICREQk9iamVjdC0+UXVvdGUoICRFbGVtZW50LCAnSW50ZWdlcicgKSApIHsKCiAgICAgICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckRWxlbWVudCcgaW4gJyRLZXknIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJEZBUUR5bmFtaWNGaWVsZHMgPSBbXTsKICAgIG15ICVWYWxpZER5bmFtaWNGaWVsZFBhcmFtczsKICAgIG15ICVGQVFEeW5hbWljRmllbGROYW1lMkNvbmZpZzsKCiAgICAjIE9ubHkgZmV0Y2ggRHluYW1pY0ZpZWxkIGRhdGEgaWYgYSBmaWVsZCB3YXMgcmVxdWVzdGVkIGZvciBzZWFyY2hpbmcgb3Igc29ydGluZwogICAgbXkgJFBhcmFtQ2hlY2tTdHJpbmcgPSAoIGpvaW4gJycsIGtleXMgJVBhcmFtICkgfHwgJyc7CgogICAgaWYgKCByZWYgJFBhcmFte09yZGVyQnl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgJFBhcmFtQ2hlY2tTdHJpbmcgLj0gKCBqb2luICcnLCBAeyAkUGFyYW17T3JkZXJCeX0gfSApOwogICAgfQogICAgZWxzaWYgKCByZWYgJFBhcmFte09yZGVyQnl9IG5lICdIQVNIJyApIHsKICAgICAgICAkUGFyYW1DaGVja1N0cmluZyAuPSAkUGFyYW17T3JkZXJCeX0gfHwgJyc7CiAgICB9CgogICAgaWYgKCAkUGFyYW1DaGVja1N0cmluZyA9fiBtL0R5bmFtaWNGaWVsZF8vc214ICkgewoKICAgICAgICAjIENoZWNrIGFsbCBjb25maWd1cmVkIEZBUSBkeW5hbWljIGZpZWxkcwogICAgICAgICRGQVFEeW5hbWljRmllbGRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdGQVEnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHskRkFRRHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgICAgICRWYWxpZER5bmFtaWNGaWVsZFBhcmFtc3sgIkR5bmFtaWNGaWVsZF8iIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAxOwogICAgICAgICAgICAkRkFRRHluYW1pY0ZpZWxkTmFtZTJDb25maWd7ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICgKICAgICAgICAgICAgISRPcmRlckJ5CiAgICAgICAgICAgIHx8ICggISRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICYmICEkVmFsaWREeW5hbWljRmllbGRQYXJhbXN7JE9yZGVyQnl9ICkKICAgICAgICAgICAgfHwgJE9yZGVyQnlTZWVueyRPcmRlckJ5fQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSB2YWx1ZSB0byBjaGVjayBpZiBpdCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlCiAgICAgICAgJE9yZGVyQnlTZWVueyRPcmRlckJ5fSA9IDE7CgogICAgfQoKICAgICMgY2hlY2sgaWYgT3JkZXJCeURpcmVjdGlvbiBhcnJheSBjb250YWlucyBvbmx5ICdVcCcgb3IgJ0Rvd24nCiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAoIEB7ICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAjIG9ubHkgJ1VwJyBvciAnRG93bicgYWxsb3dlZAogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ1VwJzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdEb3duJzsKCiAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeURpcmVjdGlvbiBjYW4gb25seSBjb250YWluICdVcCcgb3IgJ0Rvd24nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU1FMCiAgICBteSAkU1FMID0gJ1NFTEVDVCBpLmlkLCBjb3VudCggdi5pdGVtX2lkICkgYXMgdm90ZXMsIGF2Zyggdi5yYXRlICkgYXMgdnJhdGUgJwogICAgICAgIC4gJ0ZST00gZmFxX2l0ZW0gaSAnCiAgICAgICAgLiAnTEVGVCBKT0lOIGZhcV92b3RpbmcgdiBPTiB2Lml0ZW1faWQgPSBpLmlkICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3N0YXRlIHMgT04gcy5pZCA9IGkuc3RhdGVfaWQnOwoKICAgICMgZXh0ZW5kZWQgU1FMCiAgICBteSAkRXh0ID0gJyc7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZnVsbC10ZXh0IHNlYXJjaAogICAgaWYgKCAkUGFyYW17V2hhdH0gJiYgJFBhcmFte1doYXR9IG5lICcqJyApIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBmaWVsZHMgZm9yIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKCAnaS5mX251bWJlcicsICdpLmZfc3ViamVjdCcsICdpLmZfa2V5d29yZHMnICk7CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGludGVybmFsKQogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnaW50ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIGludGVybmFsLCBleHRlcm5hbCBhbmQgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlIGVxICdpbnRlcm5hbCcKICAgICAgICAgICAgICAgICAgICB8fCAkRmllbGRTdGF0ZSBlcSAnZXh0ZXJuYWwnCiAgICAgICAgICAgICAgICAgICAgfHwgJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBjdXN0b21lciBpbnRlcmZhY2UgKGV4dGVybmFsKQogICAgICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnZXh0ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIGV4dGVybmFsIGFuZCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdleHRlcm5hbCcgfHwgJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBwdWJsaWMgaW50ZXJmYWNlIChwdWJsaWMpCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgICRFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgICAgID0+IFxAU2VhcmNoRmllbGRzLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gJFBhcmFte1doYXR9LAogICAgICAgICAgICBTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17TnVtYmVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIoaS5mX251bWJlcikgTElLRSBMT1dFUignIiAuICRQYXJhbXtOdW1iZXJ9IC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgdGl0bGUKICAgIGlmICggJFBhcmFte1RpdGxlfSApIHsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gIlwlJFBhcmFte1RpdGxlfVwlIjsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtUaXRsZX0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9zdWJqZWN0KSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbGFuZ3VhZ2VzCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEc30gJiYgcmVmICRQYXJhbXtMYW5ndWFnZUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17TGFuZ3VhZ2VJRHN9IH0gKSB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17TGFuZ3VhZ2VJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3JpZXMKICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kuY2F0ZWdvcnlfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRHMgKG9ubHkgc2VhcmNoIGZvciB2YWxpZCBGQVFzKQogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRHN9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgbXkgQFZhbGlkSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICRQYXJhbXtWYWxpZElEc30gPSBcQFZhbGlkSURzOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBWYWxpZElEcwogICAgaWYgKCAkUGFyYW17VmFsaWRJRHN9ICYmIHJlZiAkUGFyYW17VmFsaWRJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte1ZhbGlkSURzfSB9ICkgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtWYWxpZElEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3Igc3RhdGVzCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnSEFTSCcgJiYgJXsgJFBhcmFte1N0YXRlc30gfSApIHsKCiAgICAgICAgbXkgQFN0YXRlcyA9IG1hcCB7ICREQk9iamVjdC0+UXVvdGUoICRfLCAnSW50ZWdlcicgKSB9IGtleXMgJXsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgcmV0dXJuIGlmIHNjYWxhciBAU3RhdGVzICE9IGtleXMgJXsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3MudHlwZV9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFxAU3RhdGVzLAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGtleXdvcmRzCiAgICBpZiAoICRQYXJhbXtLZXl3b3JkfSApIHsKCiAgICAgICAgJFBhcmFte0tleXdvcmR9ID1+IHMvLC8mJi9nOwogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9fiBzLzsvJiYvZzsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPX4gcy8gLyYmL2c7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIHRoZSBTUUwgZm9yIHRoZSBrZXl3b3JkIHNlYXJjaAogICAgICAgICRFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgICAgID0+ICdpLmZfa2V5d29yZHMnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gJFBhcmFte0tleXdvcmR9LAogICAgICAgICAgICBTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IG9ubHkgYXBwcm92ZWQgRkFRIGFydGljbGVzIGZvciBwdWJsaWMgYW5kIGN1c3RvbWVyIGludGVyZmFjZQogICAgaWYgKCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdwdWJsaWMnIHx8ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJyBpLmFwcHJvdmVkID0gMSc7CiAgICB9CgogICAgIyBvdGhlcndpc2UgY2hlY2sgaWYgbmVlZCB0byBzZWFyY2ggZm9yIGFwcHJvdmVkIHN0YXR1cwogICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtBcHByb3ZlZH0gKSB7CiAgICAgICAgbXkgJEFwcHJvdmVkVmFsdWUgPSAkUGFyYW17QXBwcm92ZWR9ID8gMSA6IDA7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgaS5hcHByb3ZlZCA9ICRBcHByb3ZlZFZhbHVlIjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgY3JlYXRlIHVzZXJzCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NyZWF0ZWRVc2VySURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q3JlYXRlZFVzZXJJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q3JlYXRlZFVzZXJJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmNyZWF0ZWRfYnknLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17Q3JlYXRlZFVzZXJJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGxhc3QgY2hhbmdlIHVzZXJzCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30KICAgICAgICAmJiByZWYgJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30gZXEgJ0FSUkFZJwogICAgICAgICYmIEB7ICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmNoYW5nZWRfYnknLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyk7CgogICAgIyBzZWFyY2ggZm9yIGNyZWF0ZSBhbmQgY2hhbmdlIHRpbWVzCiAgICAjIHJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcwogICAgbXkgJEN1cnJlbnRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKCiAgICAjIGdldCBGQVEgaXRlbXMgY3JlYXRlZCBvbGRlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwogICAgICAgICRUaW1lU3RhbXAgLT0gKCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXN9ICogNjAgKTsKCiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZVN0YW1wLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNyZWF0ZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKICAgICAgICAkVGltZVN0YW1wIC09ICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSAqIDYwICk7CgogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVTdGFtcCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSApIHsKCiAgICAgICAgIyBjaGVjayB0aW1lIGZvcm1hdAogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFRpbWVPYmplY3QtPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSwKICAgICAgICApOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jcmVhdGVkIDw9ICciCiAgICAgICAgICAgIC4gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRUaW1lT2JqZWN0LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZSBmcmFtZQogICAgICAgIHJldHVybiBpZiAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY3JlYXRlZCA+PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZSgpOwogICAgICAgICRUaW1lU3RhbXAgLT0gKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICogNjAgKTsKCiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgICAgICAgICAgU3lzdGVtVGltZSA9PiAkVGltZVN0YW1wLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKICAgICAgICAkVGltZVN0YW1wIC09ICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSAqIDYwICk7CgogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICAgICAgICAgIFN5c3RlbVRpbWUgPT4gJFRpbWVTdGFtcCwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSApIHsKCiAgICAgICAgIyBjaGVjayB0aW1lIGZvcm1hdAogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJFRpbWVPYmplY3QtPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKAogICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSwKICAgICAgICApOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jaGFuZ2VkIDw9ICciCiAgICAgICAgICAgIC4gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRUaW1lT2JqZWN0LT5UaW1lU3RhbXAyU3lzdGVtVGltZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZSBmcmFtZQogICAgICAgIHJldHVybiBpZiAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY2hhbmdlZCA+PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBSZW1lbWJlciBhbHJlYWR5IGpvaW5lZCB0YWJsZXMgZm9yIHNvcnRpbmcuCiAgICBteSAlRHluYW1pY0ZpZWxkSm9pblRhYmxlczsKICAgIG15ICREeW5hbWljRmllbGRKb2luQ291bnRlciA9IDE7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrLWVuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIERZTkFNSUNfRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JEZBUUR5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICRTZWFyY2hQYXJhbSA9ICRQYXJhbXsgIkR5bmFtaWNGaWVsZF8iIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ19GSUVMRCBpZiAoICEkU2VhcmNoUGFyYW0gKTsKICAgICAgICBuZXh0IERZTkFNSUNfRklFTEQgaWYgKCByZWYgJFNlYXJjaFBhcmFtIG5lICdIQVNIJyApOwoKICAgICAgICBteSAkTmVlZEpvaW47CgogICAgICAgIGZvciBteSAkT3BlcmF0b3IgKCBzb3J0IGtleXMgJXskU2VhcmNoUGFyYW19ICkgewoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcyA9ICggcmVmICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gZXEgJ0FSUkFZJyApCiAgICAgICAgICAgICAgICA/IEB7ICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gfQogICAgICAgICAgICAgICAgOiAoICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gKTsKCiAgICAgICAgICAgIG15ICRTUUxFeHRTdWIgPSAnIEFORCAoJzsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIGRhdGEgdHlwZQogICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFZhbGlkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIicgb24gZmllbGQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICInISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICAjIEpvaW4gdGhlIHRhYmxlIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgJFNRTCAuPSAiIElOTkVSIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIKICAgICAgICAgICAgICAgIE9OIChpLmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIEdST1VQIEJZCiAgICAkRXh0CiAgICAgICAgLj0gJyBHUk9VUCBCWSBpLmlkLCBpLmZfc3ViamVjdCwgaS5mX2xhbmd1YWdlX2lkLCBpLmNyZWF0ZWQsIGkuY2hhbmdlZCwgcy5uYW1lLCB2Lml0ZW1faWQgJzsKCiAgICAjIGFkZCBIQVZJTkcgY2xhdXNlICggVm90ZXMgYW5kIFJhdGUgYXJlIGFnZ3JlZ2F0ZWQgY29sdW1ucywgdGhleSBjYW4ndCBiZSBpbiB0aGUgV0hFUkUgY2xhdXNlKQogICAgIyBkZWZpbmVkIHZvdGluZyBwYXJhbWV0ZXJzIChmb3IgVm90ZXMgYW5kIFJhdGUpCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICc9JywKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnPicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJz49JywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnPCcsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzw9JywKICAgICk7CgogICAgbXkgJEhhdmluZ1ByaW50OwogICAgbXkgJEFkZGVkQ29uZGl0aW9uOwoKICAgIEhBVklOR19QQVJBTToKICAgIGZvciBteSAkSGF2aW5nUGFyYW0gKHF3KFZvdGVzIFJhdGUpKSB7CiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gJFBhcmFteyRIYXZpbmdQYXJhbX07CgogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggISRTZWFyY2hQYXJhbSApOwogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggcmVmICRTZWFyY2hQYXJhbSBuZSAnSEFTSCcgKTsKCiAgICAgICAgT1BFUkFUT1I6CiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAleyRTZWFyY2hQYXJhbX0gKSB7CgogICAgICAgICAgICBuZXh0IE9QRVJBVE9SIGlmICEoICRWb3RpbmdPcGVyYXRvcnN7JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgIyBwcmludCBIQVZJTkcgY2xhdXNlIGp1c3Qgb25jZSBpZiBhbmQganVzdCBpZiB0aGUgb3BlcmF0b3IgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKCAhJEhhdmluZ1ByaW50ICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAnIEhBVklORyAnOwogICAgICAgICAgICAgICAgJEhhdmluZ1ByaW50ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YjsKCiAgICAgICAgICAgIG15IEBTZWFyY2hQYXJhbXMgPSAoIHJlZiAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IGVxICdBUlJBWScgKQogICAgICAgICAgICAgICAgPyBAeyAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IH0KICAgICAgICAgICAgICAgIDogKCAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIGRvIG5vdCB1c2UgQU5EIG9uIHRoZSBmaXJzdCBjb25kaXRpb24KICAgICAgICAgICAgaWYgKCRBZGRlZENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIEFORCAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcgT1IgJyBpZiAoJENvdW50ZXIpOwoKICAgICAgICAgICAgICAgICMgZGVmaW5lIGFnZ3JlZ2F0aW9uIGNvbHVtbgogICAgICAgICAgICAgICAgbXkgJEFnZ3JlZ2F0ZUNvbHVtbiA9ICdjb3VudCggdi5pdGVtX2lkICknOwogICAgICAgICAgICAgICAgaWYgKCAkSGF2aW5nUGFyYW0gZXEgJ1JhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRBZ2dyZWdhdGVDb2x1bW4gPSAnYXZnKCB2LnJhdGUgKSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgY29uZGl0aW9uCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICIgJEFnZ3JlZ2F0ZUNvbHVtbiAkVm90aW5nT3BlcmF0b3JzeyRPcGVyYXRvcn0gIjsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJERCT2JqZWN0LT5RdW90ZSggJFRleHQsICdOdW1iZXInICkgLiAiICI7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjbG9zZSBjb25kaXRpb24KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSAnOwoKICAgICAgICAgICAgIyBhZGQgY29uZGl0aW9uIHRvIHRoZSBmaW5hbCBTUUwgc3RhdGVtZW50CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZGl0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgJEV4dCAuPSAnIE9SREVSIEJZJzsKICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICRFeHQgLj0gJywnOwogICAgICAgIH0KCiAgICAgICAgIyBzb3J0IGJ5IGR5bmFtaWMgZmllbGQKICAgICAgICBpZiAoICRWYWxpZER5bmFtaWNGaWVsZFBhcmFtc3sgJFBhcmFte09yZGVyQnl9LT5bJENvdW50XSB9ICkgewogICAgICAgICAgICBteSAoJER5bmFtaWNGaWVsZE5hbWUpID0gJFBhcmFte09yZGVyQnl9LT5bJENvdW50XSA9fiBtL15EeW5hbWljRmllbGRfKC4qKSQvc214OwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRGQVFEeW5hbWljRmllbGROYW1lMkNvbmZpZ3skRHluYW1pY0ZpZWxkTmFtZX07CgogICAgICAgICAgICAjIElmIHRoZSB0YWJsZSB3YXMgYWxyZWFkeSBqb2luZWQgZm9yIHNlYXJjaGluZywgd2UgcmV1c2UgaXQuCiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAjIEpvaW4gdGhlIHRhYmxlIGZvciB0aGlzIGR5bmFtaWMgZmllbGQ7IHVzZSBhIGxlZnQgb3V0ZXIgam9pbiBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAgICAgICAjIFdpdGggYW4gSU5ORVIgSk9JTiB3ZSdkIGxpbWl0IHRoZSByZXN1bHQgc2V0IHRvIHRpY2tldHMgd2hpY2ggaGF2ZSBhbiBlbnRyeQogICAgICAgICAgICAgICAgIyAgIGZvciB0aGUgREYgd2hpY2ggaXMgdXNlZCBmb3Igc29ydGluZy4KICAgICAgICAgICAgICAgICRTUUwKICAgICAgICAgICAgICAgICAgICAuPSAiIExFRlQgT1VURVIgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgIE9OIChpLml0ZW1faWQgPSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5UYWJsZXN7ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gImRmdiREeW5hbWljRmllbGRKb2luQ291bnRlciI7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTUUxPcmRlckZpZWxkID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTE9yZGVyRmllbGRHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRXh0IC49ICIgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHJlZ3VsYXIgc29ydAogICAgICAgICAgICAkRXh0IC49ICcgJyAuICRPcmRlckJ5VGFibGV7ICRQYXJhbXtPcmRlckJ5fS0+WyRDb3VudF0gfTsKICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAkRXh0IC49ICcgQVNDJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBERVNDJzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ0ZBUUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBpZiAoICQjeyAkUGFyYW17T3JkZXJCeX0gfSA+PSAwICkgewogICAgICAgICAgICAkRXh0IC49ICcsJzsKICAgICAgICB9CgogICAgICAgICMgc2V0IGRlZmF1bHQgb3JkZXIgYnkgZGlyZWN0aW9uCiAgICAgICAgbXkgJE9yZGVyQnlEaXJlY3Rpb24gPSAnQVNDJzsKCiAgICAgICAgIyB0cnkgdG8gZ2V0IHRoZSBvcmRlciBieSBkaXJlY3Rpb24gb2YgdGhlIGxhc3QKICAgICAgICAjIHVzZWQgJ0NyZWF0ZWQnIG9yICdDaGFuZ2VkJyBPcmRlckJ5IHBhcmFtZXRlcnMKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkT3JkZXJCeSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdDcmVhdGVkJyB8fCAkT3JkZXJCeSBlcSAnQ2hhbmdlZCcgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnlEaXJlY3Rpb24gPSAnQVNDJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5RGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgJEV4dCAuPSAnICcgLiAkT3JkZXJCeVRhYmxle0ZBUUlEfSAuICcgJyAuICRPcmRlckJ5RGlyZWN0aW9uOwogICAgfQoKICAgICMgYWRkIGV4dGVuZGVkIFNRTAogICAgJFNRTCAuPSAkRXh0OwoKICAgICMgYXNrIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgNTAwLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1jdXQKCj1pdGVtIF9JbkNvbmRpdGlvbkdldCgpCgppbnRlcm5hbCBmdW5jdGlvbiB0byBjcmVhdGUgYW4KCiAgICB0YWJsZS5jb2x1bW4gSU4gKHZhbHVlcykKCmNvbmRpdGlvbiBzdHJpbmcgZnJvbSBhbiBhcnJheS4KCiAgICBteSAkU1FMUGFydCA9ICRUaWNrZXRPYmplY3QtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGFibGUuY29sdW1uJywKICAgICAgICBJRFJlZiAgICAgICA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9JbkNvbmRpdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtUYWJsZUNvbHVtbn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFRhYmxlQ29sdW1uISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SURSZWZ9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIElEUmVmISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzb3J0IGlkcyB0byBjYWNoZSB0aGUgU1FMIHF1ZXJ5CiAgICBteSBAU29ydGVkSURzID0gc29ydCB7ICRhIDw9PiAkYiB9IEB7ICRQYXJhbXtJRFJlZn0gfTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgRXJyb3Igb3V0IGlmIHNvbWUgdmFsdWVzIHdlcmUgbm90IGludGVnZXJzLgogICAgQFNvcnRlZElEcyA9IG1hcCB7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0gQFNvcnRlZElEczsKICAgIHJldHVybiBpZiBzY2FsYXIgQFNvcnRlZElEcyAhPSBzY2FsYXIgQHsgJFBhcmFte0lEUmVmfSB9OwoKICAgICMgc3BsaXQgSU4gc3RhdGVtZW50IHdpdGggbW9yZSB0aGFuIDkwMCBlbGVtZW50cyBpbiBtb3JlIHN0YXRlbWVudHMgY29tYmluZWQgd2l0aCBPUgogICAgIyBiZWNhdXNlIE9yYWNsZSBkb2Vzbid0IHN1cHBvcnQgbW9yZSB0aGFuIDEwMDAgZWxlbWVudHMgaW4gb25lIElOIHN0YXRlbWVudC4KICAgIG15IEBTUUxTdHJpbmdzOwogICAgTE9PUDoKICAgIHdoaWxlICggc2NhbGFyIEBTb3J0ZWRJRHMgKSB7CgogICAgICAgIG15IEBTb3J0ZWRJRHNQYXJ0ID0gc3BsaWNlIEBTb3J0ZWRJRHMsIDAsIDkwMDsKCiAgICAgICAgbXkgJElEU3RyaW5nID0gam9pbiAnLCAnLCBAU29ydGVkSURzUGFydDsKCiAgICAgICAgcHVzaCBAU1FMU3RyaW5ncywgIiAkUGFyYW17VGFibGVDb2x1bW59IElOICgkSURTdHJpbmcpICI7CiAgICB9CgogICAgbXkgJFNRTCA9IGpvaW4gJyBPUiAnLCBAU1FMU3RyaW5nczsKICAgICRTUUwgPSAnICggJyAuICRTUUwgLiAnICkgJzsKCiAgICByZXR1cm4gJFNRTDsKfQoKMTsKCj1lbmQgSW50ZXJuYWw6Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFRCgo9aGVhZDEgU1lOT1BTSVMKCkZBUSBiYWNrZW5kIGZvciB0aGUgbGluayBvYmplY3QuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEZBUU9iamVjdEJhY2tlbmQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgb2JqZWN0cwogICAgIyAkR3JvdXBPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6R3JvdXAtPm5ldyggJXskU2VsZn0gKTsKICAgICMgJEZBUU9iamVjdCAgID0gS2VybmVsOjpTeXN0ZW06OkZBUS0+bmV3KCAleyRTZWxmfSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gTGlua0xpc3RXaXRoRGF0YSgpCgpmaWxsIHVwIHRoZSBsaW5rIGxpc3Qgd2l0aCBkYXRhCgogICAgJFN1Y2Nlc3MgPSAkRkFRTGlua09iamVjdC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBMaW5rTGlzdCA9PiAkSGFzaFJlZiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rTGlzdFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fSB9ICkgewoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfSB9ICkgewoKICAgICAgICAgICAgRkFRSUQ6CiAgICAgICAgICAgIGZvciBteSAkRkFRSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgaWQgZnJvbSBoYXNoIGlmIG5vIEZBUSBkYXRhIHdhcyBmb3VuZAogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgRkFRSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgRkFRIGRhdGEKICAgICAgICAgICAgICAgICRQYXJhbXtMaW5rTGlzdH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0tPnskRkFRSUR9ID0gXCVGQVFEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkRkFRTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPYmplY3QgS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbW9kdWxlIHJlZ2lzdHJ5IG9mIEFnZW50RkFRWm9vbQogICAgbXkgJE1vZHVsZVJlZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRGQVFab29tfTsKCiAgICAjIGRvIG5vdCBncmFudCBhY2Nlc3MgaWYgZnJvbnRlbmQgbW9kdWxlIGlzIG5vdCByZWdpc3RlcmVkCiAgICByZXR1cm4gaWYgISRNb2R1bGVSZWc7CgogICAgIyBncmFudCBhY2Nlc3MgaWYgbW9kdWxlIHBlcm1pc3Npb24gaGFzIG5vIEdyb3VwIG9yIEdyb3VwUm8gZGVmaW5lZAogICAgaWYgKCAhJE1vZHVsZVJlZy0+e0dyb3VwUm99ICYmICEkTW9kdWxlUmVnLT57R3JvdXB9ICkgewoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgIFBFUk1JU1NJT046CiAgICBmb3IgbXkgJFBlcm1pc3Npb24gKHF3KEdyb3VwUm8gR3JvdXApKSB7CgogICAgICAgIG5leHQgUEVSTUlTU0lPTiBpZiAhJE1vZHVsZVJlZy0+eyRQZXJtaXNzaW9ufTsKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgcmVmICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gbmUgJ0FSUkFZJzsKCiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7ICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn0gfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBncm91cCBpZAogICAgICAgICAgICBteSAkR3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoIEdyb3VwID0+ICRHcm91cCApOwoKICAgICAgICAgICAgbXkgJFR5cGU7CiAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb24gZXEgJ0dyb3VwUm8nICkgewogICAgICAgICAgICAgICAgJFR5cGUgPSAncm8nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb24gZXEgJ0dyb3VwJyApIHsKICAgICAgICAgICAgICAgICRUeXBlID0gJ3J3JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgdXNlciBncm91cHMsIHdoZXJlIHRoZSB1c2VyIGhhcyB0aGUgYXBwcm9wcmlhdGUgcHJpdmlsZWdlCiAgICAgICAgICAgIG15ICVHcm91cHMgPSAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdyYW50IGFjY2VzcyBpZiBhZ2VudCBpcyBhIG1lbWJlciBpbiB0aGUgZ3JvdXAKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJEdyb3Vwc3skR3JvdXBJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKPWl0ZW0gT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zCgpSZXR1cm4KICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkZBUSMgMTIzNCIsCiAgICAgICAgTG9uZyAgID0+ICJGQVEjIDEyMzQ6IEZBUVRpdGxlIiwKICAgICk7CgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnRkFRJywKICAgICAgICBMb25nICAgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb24gaWYgJFBhcmFte01vZGV9ICYmICRQYXJhbXtNb2RlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICAjIGdldCBGQVEKICAgIG15ICVGQVEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISVGQVE7CgogICAgIyBkZWZpbmUgZGVzY3JpcHRpb24gdGV4dAogICAgbXkgJEZBUUhvb2sgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSAkRGVzY3JpcHRpb25UZXh0ID0gIiRGQVFIb29rICRGQVF7TnVtYmVyfSI7CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gJERlc2NyaXB0aW9uVGV4dCwKICAgICAgICBMb25nICAgPT4gIiREZXNjcmlwdGlvblRleHQ6ICRGQVF7VGl0bGV9IiwKICAgICk7CgogICAgcmV0dXJuICVEZXNjcmlwdGlvbjsKfQoKPWl0ZW0gT2JqZWN0U2VhcmNoKCkKCnJldHVybiBhIGhhc2ggbGlzdCBvZiB0aGUgc2VhcmNoIHJlc3VsdHMKClJldHVybgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgTk9UTElOS0VEID0+IHsKICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgIDEyICA9PiAkRGF0YU9mSXRlbTEyLAogICAgICAgICAgICAgICAgMjEyID0+ICREYXRhT2ZJdGVtMjEyLAogICAgICAgICAgICAgICAgMzMyID0+ICREYXRhT2ZJdGVtMzMyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKICAgICRTZWFyY2hMaXN0ID0gJExpbmtPYmplY3RCYWNrZW5kLT5PYmplY3RTZWFyY2goCiAgICAgICAgU2VhcmNoUGFyYW1zID0+ICRIYXNoUmVmLCAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBhZGQgd2lsZC1jYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgc2VhcmNoIHRoZSBGQVFzCiAgICBteSBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICV7ICRQYXJhbXtTZWFyY2hQYXJhbXN9IH0sCiAgICAgICAgJVNlYXJjaCwKICAgICAgICBPcmRlciAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIFNvcnQgICA9PiAnZG93bicsCiAgICAgICAgTGltaXQgID0+IDUwLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBGQVFJRDoKICAgIGZvciBteSAkRkFRSUQgKEBGQVFJRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEZBUUlEIGlmICElRkFRRGF0YTsKCiAgICAgICAgIyBhZGQgRkFRIGRhdGEKICAgICAgICAkU2VhcmNoTGlzdHtOT1RMSU5LRUR9LT57U291cmNlfS0+eyRGQVFJRH0gPSBcJUZBUURhdGE7CiAgICB9CgogICAgcmV0dXJuIFwlU2VhcmNoTGlzdDsKfQoKPWl0ZW0gTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rQWRkUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gTGlua0RlbGV0ZVByZSgpCgpsaW5rIGRlbGV0ZSBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0RlbGV0ZVByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRGQVFMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIExpbmtEZWxldGVQb3N0KCkKCmxpbmsgZGVsZXRlIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkRkFRTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpGQVFBY2Nlc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGF0ZTo6UGNhbGMgcXcoRGF5c19pbl9Nb250aCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpbWUnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQYXJhbSB7CgogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAUGFyYW1zID0gKCk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lCiAgICBteSAoICRzLCAkbSwgJGgsICRELCAkTSwgJFkgKSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyktPlN5c3RlbVRpbWUyRGF0ZSgKICAgICAgICBTeXN0ZW1UaW1lID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaW1lJyktPlN5c3RlbVRpbWUoKSwKICAgICk7CiAgICAkRCA9IHNwcmludGYoICIlMDJkIiwgJEQgKTsKICAgICRNID0gc3ByaW50ZiggIiUwMmQiLCAkTSApOwogICAgJFkgPSBzcHJpbnRmKCAiJTAyZCIsICRZICk7CgogICAgIyBjcmVhdGUgcG9zc2libGUgdGltZSBzZWxlY3Rpb25zCiAgICBteSAlWWVhciA9IG1hcCB7ICRfID0+ICRfIH0gKCAkWSAtIDEwIC4uICRZICsgMSApOwogICAgbXkgJU1vbnRoID0gbWFwIHsgc3ByaW50ZiggIiUwMmQiLCAkXyApID0+IHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAxMiApOwogICAgbXkgJURheSAgID0gbWFwIHsgc3ByaW50ZiggIiUwMmQiLCAkXyApID0+IHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAzMSApOwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnMDEnLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0TW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkTSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgeWVhcicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kRGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEQsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJE0sCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVNb250aCwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCB5ZWFyJywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhTdGFydFllYXIgU3RhcnRNb250aCBTdGFydERheSBFbmRZZWFyIEVuZE1vbnRoIEVuZERheSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvcnJlY3Qgc3RhcnQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJFN0YXJ0RGF5ID0gc3ByaW50ZiggIiUwMmQiLCBEYXlzX2luX01vbnRoKCAkUGFyYW17U3RhcnRZZWFyfSwgJFBhcmFte1N0YXJ0TW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte1N0YXJ0RGF5fSA8ICRTdGFydERheSApIHsKICAgICAgICAkU3RhcnREYXkgPSAkUGFyYW17U3RhcnREYXl9OwogICAgfQoKICAgICMgY29ycmVjdCBlbmQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlcgogICAgbXkgJEVuZERheSA9IHNwcmludGYoICIlMDJkIiwgRGF5c19pbl9Nb250aCggJFBhcmFte0VuZFllYXJ9LCAkUGFyYW17RW5kTW9udGh9ICkgKTsKICAgIGlmICggJFBhcmFte0VuZERheX0gPCAkRW5kRGF5ICkgewogICAgICAgICRFbmREYXkgPSAkUGFyYW17RW5kRGF5fTsKICAgIH0KCiAgICAjIHNldCBzdGFydCBhbmQgZW5kIGRhdGUKICAgIG15ICRTdGFydERhdGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAwMDowMDowMCI7CiAgICBteSAkRW5kRGF0ZSAgID0gIiRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkgMjM6NTk6NTkiOwoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJEZBUVRvcDEwTGltaXRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCcpOwoKICAgICMgZ2V0IGEgY291bnQgb2YgYWxsIEZBUSBhcnRpY2xlcwogICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgICAgIFN0YXJ0RGF0ZSA9PiAkU3RhcnREYXRlLAogICAgICAgIEVuZERhdGUgICA9PiAkRW5kRGF0ZSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICBMaW1pdCAgICAgPT4gJEZBUVRvcDEwTGltaXRDb25maWcsCiAgICApIHx8IFtdOwoKICAgICMgYnVpbGQgcmVzdWx0IHRhYmxlCiAgICBteSBARGF0YTsKICAgIGZvciBteSAkSXRlbUlEUmVmICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlEUmVmLT57SXRlbUlEfSwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdm90ZSBkYXRhCiAgICAgICAgbXkgJFZvdGVEYXRhID0gJEZBUU9iamVjdC0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVSZXN1bHQgPSBzcHJpbnRmKAogICAgICAgICAgICAiJTAuIgogICAgICAgICAgICAgICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoCiAgICAgICAgICAgICAgICAiRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdERlY2ltYWxQbGFjZXMiCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuICJmIiwKICAgICAgICAgICAgJFZvdGVEYXRhLT57UmVzdWx0fQogICAgICAgICAgICAgICAgfHwgMAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVzID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgICAgICMgYnVpbGQgdGFibGUgcm93CiAgICAgICAgcHVzaCBARGF0YSwgWwogICAgICAgICAgICAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICRJdGVtSURSZWYtPntDb3VudH0sCiAgICAgICAgICAgICRWb3RlUmVzdWx0LAogICAgICAgICAgICAkVm90ZXMsCiAgICAgICAgXTsKICAgIH0KCiAgICAjIHNldCByZXBvcnQgdGl0bGUKICAgIG15ICRUaXRsZSA9ICIkUGFyYW17U3RhcnRZZWFyfS0kUGFyYW17U3RhcnRNb250aH0tJFN0YXJ0RGF5IC0gJFBhcmFte0VuZFllYXJ9LSRQYXJhbXtFbmRNb250aH0tJEVuZERheSI7CgogICAgIyB0YWJsZSBoZWFkbGluZXMKICAgIG15IEBIZWFkRGF0YSA9ICgKICAgICAgICAnRkFRICMnLAogICAgICAgICdUaXRsZScsCiAgICAgICAgJ0NvdW50JywKICAgICAgICAnVm90ZSBSZXN1bHQnLAogICAgICAgICdWb3RlcycsCiAgICApOwoKICAgIG15IEBSZXN1bHQgPSAoIFskVGl0bGVdLCBbQEhlYWREYXRhXSwgQERhdGEgKTsKCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQnKTsKCiMgdGVzdCBjb21tYW5kIHdpdGhvdXQgc291cmNlIGFyZ3VtZW50Cm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIk9wdGlvbiAtIHdpdGhvdXQgc291cmNlLXBhdGggYXJndW1lbnQiLAopOwoKbXkgJFNvdXJjZVBhdGggPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9GQVEuY3N2IjsKCiMgdGVzdCBjb21tYW5kIHdpdGggc291cmNlIGFyZ3VtZW50CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1zZXBhcmF0b3InLCAnOycsICctLXF1b3RlJywgJycsICRTb3VyY2VQYXRoICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIHdpdGggc291cmNlIGFyZ3VtZW50IiwKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBpbmZvCiAgVGVzdE1vZGU6ICcwJwpEZXNjcmlwdGlvbjogRkFRIENvbm5lY3RvciBSRVNUIFNhbXBsZQpGcmFtZXdvcmtWZXJzaW9uOiA1LjAueCBnaXQKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCBhbGwgYXZhaWxhYmxlcyBsYW5ndWFnZXMKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogRkFROjpMYW5ndWFnZUxpc3QKICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgRGVzY3JpcHRpb246IExpc3QgYWxsIHB1YmxpYyBGQVEgY2F0ZWdvcmllcyAod2l0aCB0cmVlIGluZm9ybWF0aW9uKQogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdAogICAgUHVibGljRkFRR2V0OgogICAgICBEZXNjcmlwdGlvbjogUmV0cmlldmUgcHVibGljIEZBUSBlbnRyaWVzCiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRR2V0CiAgICBQdWJsaWNGQVFTZWFyY2g6CiAgICAgIERlc2NyaXB0aW9uOiBTZWFyY2ggZm9yIHB1YmxpYyBGQVFzCiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRU2VhcmNoCiAgVHJhbnNwb3J0OgogICAgQ29uZmlnOgogICAgICBLZWVwQWxpdmU6ICcnCiAgICAgIE1heExlbmd0aDogJzEwMDAwMDAwJwogICAgICBSb3V0ZU9wZXJhdGlvbk1hcHBpbmc6CiAgICAgICAgTGFuZ3VhZ2VMaXN0OgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gR0VUCiAgICAgICAgICBSb3V0ZTogL0xhbmd1YWdlTGlzdAogICAgICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgICAgIFJlcXVlc3RNZXRob2Q6CiAgICAgICAgICAtIEdFVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNDYXRlZ29yeUxpc3QKICAgICAgICBQdWJsaWNGQVFHZXQ6CiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOgogICAgICAgICAgLSBHRVQKICAgICAgICAgIFJvdXRlOiAvUHVibGljRkFRR2V0CiAgICAgICAgUHVibGljRkFRU2VhcmNoOgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gUE9TVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNGQVFTZWFyY2gKICAgIFR5cGU6IEhUVFA6OlJFU1QKUmVtb3RlU3lzdGVtOiAnJwpSZXF1ZXN0ZXI6CiAgVHJhbnNwb3J0OgogICAgVHlwZTogJycK
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVzY3JpcHRpb246ICcnCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBMYW5ndWFnZUxpc3Q6CiAgICAgIERlc2NyaXB0aW9uOiBMaXN0ICBhbGwgYXZhaWxhYmxlcyBsYW5ndWFnZXMKICAgICAgVHlwZTogRkFROjpMYW5ndWFnZUxpc3QKICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgRGVzY3JpcHRpb246IExpc3QgYWxsIHB1YmxpYyBGQVEgY2F0ZWdvcmllcyAod2l0aCB0cmVlIGluZm9ybWF0aW9uKQogICAgICBUeXBlOiBGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdAogICAgUHVibGljRkFRR2V0OgogICAgICBEZXNjcmlwdGlvbjogUmV0cmlldmUgcHVibGljIEZBUSBlbnRyaWVzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRR2V0CiAgICBQdWJsaWNGQVFTZWFyY2g6CiAgICAgIERlc2NyaXB0aW9uOiBTZWFyY2ggZm9yIHB1YmxpYyBGQVFzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRU2VhcmNoCiAgVHJhbnNwb3J0OgogICAgQ29uZmlnOgogICAgICBNYXhMZW5ndGg6ICcxMDAwMDAwMCcKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90cnMub3JnL0ZBUUNvbm5lY3RvcgogICAgICBSZXF1ZXN0TmFtZUZyZWVUZXh0OiAnJwogICAgICBSZXF1ZXN0TmFtZVNjaGVtZTogJycKICAgICAgUmVzcG9uc2VOYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlc3BvbnNlTmFtZVNjaGVtZTogUmVzcG9uc2UKICAgIFR5cGU6IEhUVFA6OlNPQVAKUmVtb3RlU3lzdGVtOiAnJwpSZXF1ZXN0ZXI6CiAgVHJhbnNwb3J0OgogICAgVHlwZTogJycK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0Jyk7CgpteSAoICRSZXN1bHQsICRFeGl0Q29kZSApOwp7CiAgICBsb2NhbCAqU1RET1VUOwogICAgb3BlbiBTVERPVVQsICc+OmVuY29kaW5nKFVURi04KScsIFwkUmVzdWx0OwogICAgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlSW5wdXQoIFwkUmVzdWx0ICk7Cn0KCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0IGV4aXQgY29kZSIsCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIGFycmF5JywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU2luZ2xlIEludGVnZXInLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzFdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+ICcgKCAgdGVzdC50YWJsZSBJTiAoMSkgICkgJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdTb3J0ZWQgdmFsdWVzJywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFsgMiwgMSwgLTEsIDAgXSwKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiAnICggIHRlc3QudGFibGUgSU4gKC0xLCAwLCAxLCAyKSAgKSAnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0ludmFsaWQgdmFsdWUnLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzEuMV0sCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWl4IG9mIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcycsCiAgICAgICAgUGFyYW1zID0+IHsKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3Rlc3QudGFibGUnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiBbIDEsIDEuMSBdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IHVuZGVmLAogICAgfSwKKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyICRGQVFPYmplY3QtPl9JbkNvbmRpdGlvbkdldCggJXsgJFRlc3QtPntQYXJhbXN9IH0gKSwKICAgICAgICAkVGVzdC0+e1Jlc3VsdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gX0luQ29uZGl0aW9uR2V0KCkiCiAgICApOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJEZBUU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwpteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCm15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJEZBUUlELAogICAgdW5kZWYsCiAgICAiRkFRQWRkKCkgLSAxIiwKKTsKCm15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm15ICVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUXskVGVzdH0sCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICBJdGVtSUQgICAgICA9PiAkRkFRSUQsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMiwKICAgIExhbmd1YWdlSUQgID0+IDIsCiAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dDInLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gZm91bmQuLi4yJywKICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCik7CgolRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSUQsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgolRkFRVGVzdCA9ICgKICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQyJywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgTGFuZ3VhZ2VJRCAgPT4gMiwKICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIGZvdW5kLi4uMicsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICRGQVF7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRPayA9ICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICBJdGVtSUQgICAgPT4gJEZBUUlELAogICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgIEludGVyZmFjZSA9PiAnMicsCiAgICBSYXRlICAgICAgPT4gMTAwLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRPaywKICAgICJWb3RlQWRkKCkiLAopOwoKbXkgJFZvdGUgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRGQVFJRCwKICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICAkVm90ZS0+e0lQfSwKICAgICc1NC40My4zMC4xJywKICAgICJWb3RlR2V0KCkgLSBJUCIsCik7CgpteSAkRkFRSUQyID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICAgPT4gJ1RpdGxlJywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0gRGVzY3JpcHRpb24gMS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRDIsCiAgICAiRkFRQWRkKCkgLSAyIiwKKTsKCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgQEF0dGFjaG1lbnRUZXN0cyA9ICgKICAgIHsKICAgICAgICBGaWxlID0+ICdGQVEtVGVzdDEucGRmJywKICAgICAgICBNRDUgID0+ICc1ZWU3NjdmM2I2OGYyNGE5MjEzZTBiZWY4MmRjNTNlNScsCiAgICB9LAogICAgewogICAgICAgIEZpbGUgPT4gJ0ZBUS1UZXN0MS5kb2MnLAogICAgICAgIE1ENSAgPT4gJzJlNTIwMDM2YTBjZGE2YTgwNmE4ODM4YjEwMDBkOWQ3JywKICAgIH0sCik7CgojIGdldCBtYWluIG9iamVjdApteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7Cgpmb3IgbXkgJEF0dGFjaG1lbnRUZXN0IChAQXR0YWNobWVudFRlc3RzKSB7CiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkSG9tZSAuICcvc2NyaXB0cy90ZXN0L3NhbXBsZS8nIC4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICApOwogICAgbXkgJEFkZCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEZBUUlEMiwKICAgICAgICBDb250ZW50ICAgICA9PiAkeyRDb250ZW50U0NBTEFSUmVmfSwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC94bWwnLAogICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEFkZCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJUZpbGUgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQyLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudEluZGV4WzBdLT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBGaWxlbmFtZSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgJE1ENSA9ICRNYWluT2JqZWN0LT5NRDVzdW0oCiAgICAgICAgU3RyaW5nID0+IFwkRmlsZXtDb250ZW50fSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJE1ENSwKICAgICAgICAkQXR0YWNobWVudFRlc3QtPntNRDV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBNRDUgJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKCiAgICBteSAkRGVsZXRlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJEZBUUlEMiwKICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnRJbmRleFswXS0+e0ZpbGVJRH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZSwKICAgICAgICAiQXR0YWNobWVudERlbGV0ZSgpIC0gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKfQoKbXkgJFZvdGVJRHNSZWYgPSAkRkFRT2JqZWN0LT5Wb3RlU2VhcmNoKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKZm9yIG15ICRWb3RlSUQgKCBAeyRWb3RlSURzUmVmfSApIHsKICAgIG15ICRWb3RlRGVsZXRlID0gJEZBUU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICBWb3RlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVm90ZURlbGV0ZSwKICAgICAgICAiVm90ZURlbGV0ZSgpIiwKICAgICk7Cn0KCiMgYWRkIEZBUSBhcnRpY2xlIHRvIGxvZwpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkRkFRSUQsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUUxvZ0FkZCgpIC0gJEZBUUlEIiwKKTsKCiMgdHJ5IHRvIGFkZCBzYW1lIEZBUSBhcnRpY2xlIHRvIGxvZyBhZ2FpbiAobXVzdCByZXR1cm4gZmFsc2UpCiRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRGQVFJRCwKICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgVXNlcklEICAgID0+IDEsCik7CiRTZWxmLT5GYWxzZSgKICAgICRTdWNjZXNzLAogICAgIkZBUUxvZ0FkZCgpIC0gJEZBUUlEIiwKKTsKCiMgYWRkIGFub3RoZXIgRkFRIGFydGljbGUgdG8gbG9nCiRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRGQVFJRDIsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUUxvZ0FkZCgpIC0gJEZBUUlEMiIsCik7CgojIGdldCBGQVEgVG9wLTEwCm15ICRUb3AxMElEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBMaW1pdCAgICAgPT4gMTAsCiAgICBVc2VySUQgICAgPT4gMSwKKSB8fCBbXTsKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgQHskVG9wMTBJRHNSZWZ9LAogICAgIkZBUVRvcDEwR2V0KCkiLAopOwoKIyB0ZXN0IExhbmd1YWdlTG9va3VwKCkKbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRMYW5ndWFnZU5hbWUsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VJRCAnMScgaXMgJyRMYW5ndWFnZU5hbWUnIiwKKTsKCm15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICBOYW1lICAgPT4gJExhbmd1YWdlTmFtZSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+SXMoCiAgICAkTGFuZ3VhZ2VJRCwKICAgIDEsCiAgICAiTGFuZ3VhZ2VMb29rdXAoKSBmb3IgTGFuZ3VhZ2VOYW1lICckTGFuZ3VhZ2VOYW1lJyIsCik7CgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEIiwKKTsKCm15ICRGQVFEZWxldGUyID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRDIsCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlMiwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSUQyIiwKKTsKCm15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnVGVzdENhdGVnb3J5JywKICAgIENvbW1lbnQgID0+ICdDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlELAogICAgIkNhdGVnb3J5QWRkKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiMgc2V0IFBhcmVudElEIHRvIGVtcHR5IHRvIG1ha2UgaXQgZmFpbApteSAkQ2F0ZWdvcnlJREZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdUZXN0Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICcnLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkQ2F0ZWdvcnlJREZhaWwsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKbXkgJENhdGVnb3J5VXBkYXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlVcGRhdGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgUGFyZW50SUQgICA9PiAwLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlVcGRhdGUsCiAgICAiQ2F0ZWdvcnlVcGRhdGUoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKIyBzZXQgUGFyZW50SUQgdG8gZW1wdHkgdG8gbWFrZSBpdCBmYWlsCm15ICRDYXRlZ29yeVVwZGF0ZUZhaWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICBQYXJlbnRJRCAgID0+ICcnLAogICAgTmFtZSAgICAgICA9PiAnUm9vdENhdGVnb3J5JywKICAgIENvbW1lbnQgICAgPT4gJ1Jvb3QgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgVmFsaWRJRCAgICA9PiAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPkZhbHNlKAogICAgJENhdGVnb3J5VXBkYXRlRmFpbCwKICAgICJDYXRlZ29yeVVwZGF0ZSgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgpteSAkQ2hpbGRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ2hpbGRDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlJRCwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENoaWxkQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENoaWxkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENoaWxkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCiNJdGVtRmllbGRHZXQgVGVzdHMKbXkgJVRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1N5bXB0b20uLi4nLAogICAgRmllbGQyID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMyA9PiAnU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVc2VyIEZpZWxkNC4uLicsCiAgICBGaWVsZDUgPT4gJ1VzZXIgRmllbGQ1Li4uJywKICAgIEZpZWxkNiA9PiAnQ29tbWVudC4uLicsCik7CgokRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlELAogICAgIkZBUUFkZCgpIGZvciBJdGVtRmllbGRHZXQgd2l0aCBUcnVlIiwKKTsKCm15ICVSZXN1bHRGaWVsZHM7CgpteSAkQ2hlY2tGaWVsZHMgPSBzdWIgewogICAgbXkgJVBhcmFtID0gQF87CgogICAgZm9yIG15ICRGaWVsZENvdW50ICggMSAuLiA2ICkgewogICAgICAgIG15ICRGaWVsZCA9ICJGaWVsZCRGaWVsZENvdW50IjsKCiAgICAgICAgIyBjaGVjayB0aGF0IGNhY2hlIGlzIGNsZWFuCiAgICAgICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgICAgIEtleSAgPT4gIkl0ZW1GaWVsZEdldDo6SXRlbUlEOjokRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgb24gYmVmb3JlIGZpcnN0IEdldCBjYWNoZSBzaG91bGQgYmUgdW5kZWYsIGFmdGVyIGZpcnMgY2FjaGUgZXhpc3QsIGJ1dCB0aGUgRmllbGQga2V5IG11c3QgYmUKICAgICAgICAjIHVuZGVmCiAgICAgICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENhY2hlLT57JEZpZWxkfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkNhY2hlIGJlZm9yZSBJdGVtRmllbGRHZXQoKTogJEZpZWxkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRDYWNoZSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkNhY2hlIGJlZm9yZSBJdGVtRmllbGRHZXQoKTogQ29tcGxldGUgY2FjaGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGZpZWxkCiAgICAgICAgJFJlc3VsdEZpZWxkc3skRmllbGR9ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBGaWVsZCAgPT4gJEZpZWxkLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGNhY2hlIGlzIHNldAogICAgICAgICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkQ2FjaGUsCiAgICAgICAgICAgICdIQVNIJywKICAgICAgICAgICAgIkNhY2hlIGFmdGVyIEl0ZW1GaWVsZEdldCgpOiByZWYiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQ2FjaGUtPnskRmllbGR9LAogICAgICAgICAgICAkUGFyYW17Q29tcGFyZUZpZWxkc30tPnskRmllbGR9LAogICAgICAgICAgICAiQ2FjaGUgYWZ0ZXIgSXRlbUZpZWxkR2V0KCk6ICRGaWVsZCBtYXRjaGVkIHdpdGggb3JpZ2luYWwgZmllbGQgZGF0YSIsCiAgICAgICAgKTsKICAgIH0KfTsKCiRDaGVja0ZpZWxkcy0+KCBDb21wYXJlRmllbGRzID0+IFwlVGVzdEZpZWxkcyApOwoKJFNlbGYtPklzRGVlcGx5KAogICAgXCVSZXN1bHRGaWVsZHMsCiAgICBcJVRlc3RGaWVsZHMsCiAgICAiSXRlbUZpZWxkR2V0KCk6IGZvciBhbGwgZmllbGRzIG1hdGNoIGV4cGVjdGVkIGRhdGEiLAopOwoKIyB1cGRhdGUgdGhlIEZBUSBpdGVtCm15ICVVcGRhdGVkVGVzdEZpZWxkcyA9ICgKICAgIEZpZWxkMSA9PiAnVXBkYXRlZCBTeW1wdG9tLi4uJywKICAgIEZpZWxkMiA9PiAnVXBkYXRlZCBQcm9ibGVtLi4uJywKICAgIEZpZWxkMyA9PiAnVXBkYXRlZCBTb2x1dGlvbi4uLicsCiAgICBGaWVsZDQgPT4gJ1VwZGF0ZWQgVXNlciBGaWVsZDQuLi4nLAogICAgRmllbGQ1ID0+ICdVcGRhdGVkIFVzZXIgRmllbGQ1Li4uJywKICAgIEZpZWxkNiA9PiAnVXBkYXRlZCBDb21tZW50Li4uJywKKTsKCiRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEID0+IDEsCiAgICBTdGF0ZUlEICAgID0+IDEsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICVVcGRhdGVkVGVzdEZpZWxkcywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUVVwZGF0ZSwKICAgICJGQVFVcGRhdGUoKSBmb3IgSXRlbUZpZWxkR2V0IHdpdGggVHJ1ZSIsCik7CgokQ2hlY2tGaWVsZHMtPiggQ29tcGFyZUZpZWxkcyA9PiBcJVVwZGF0ZWRUZXN0RmllbGRzICk7CgokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAiSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OiRGQVFJRCIsCik7CgokU2VsZi0+SXMoCiAgICAkQ2FjaGUsCiAgICB1bmRlZiwKICAgICJDYWNoZSBmb3IgSXRlbUZpZWxkR2V0KCkgYWZ0ZXIgRkFRRGVsZXRlOiBDb21wbGV0ZSBjYWNoZSIsCik7CgojIEZBUSBpdGVtIGNhY2hlIHRlc3RzCiRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEID0+IDEsCiAgICBTdGF0ZUlEICAgID0+IDEsCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBLZXl3b3JkcyAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICVUZXN0RmllbGRzLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwoKIyBjaGVjayB0aGF0IGNhY2hlIGlzIGNsZWFuCiRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBCZWZvcmUgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjoxJywKKTsKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQmVmb3JlIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCik7CgojIGdldCBGQVEgbm8gSXRlbSBGaWVsZHMKbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRGQVFJRCwKICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgIFVzZXJJRCAgICAgPT4gMQopOwoKJFNlbGYtPklzKAogICAgJEZBUURhdGF7SXRlbUlEfSwKICAgICRGQVFJRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzKAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG5vIEl0ZW1GaWVsZHMgJEZpZWxkIiwKICAgICk7Cn0KJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkRkFRSUQgLiAnOjpJdGVtRmllbGRzOjowJywKKTsKJFNlbGYtPklzKAogICAgcmVmICRDYWNoZSwKICAgICdIQVNIJywKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CiRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCik7CgojIGdldCBGQVEgd2l0aCBJdGVtIEZpZWxkcwolRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEZBUUlELAogICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG1hdGNoIEl0ZW1JRCIKKTsKCiMgc2FuaXR5IGNoZWNrIEl0ZW0gRmllbGRzCmZvciBteSAkRmllbGRDb3VudCAoIDEgLi4gNiApIHsKICAgIG15ICRGaWVsZCA9ICJGaWVsZCRGaWVsZENvdW50IjsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICB1bmRlZiwKICAgICAgICAiU2FuaXR5IENoZWNrIGZvciBGQVFHZXQoKTogd2l0aCBJdGVtRmllbGRzICRGaWVsZCIsCiAgICApOwp9CiRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEZBUUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkQ2FjaGUsCiAgICAnSEFTSCcsCiAgICAiQ2FjaGUgZm9yIEZBUSBObyBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwokQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRGQVFJRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwoKIwojIEZBUSBTdGF0ZSB0ZXN0cwojCm15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5Jc05vdCgKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAwLAogICAgIlN0YXRlTGlzdCgpIG51bWJlciBvZiBlbGVtZW50cyBzaG91bGQgbm90IGJlIDAiCik7Cgpmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIG15ICVTdGF0ZSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1N0YXRlSUR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIFN0YXRlSUQgZm9yIFN0YXRlSUQ6ICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle05hbWV9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIE5hbWUgZm9yIFN0YXRlSUQ6ICAgICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1R5cGVJRH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlN0YXRlR2V0KCkgVHlwZUlEIGZvciBTdGF0ZUlEOiAgJyRTdGF0ZUlEJyBzaG91bGQgbm90IGJlIHVuZGVmIgogICAgKTsKfQoKbXkgJFN0YXRlVHlwZUxpc3QgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICByZWYgJFN0YXRlVHlwZUxpc3QsCiAgICAnSEFTSCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIHJldHVybnMgaGFzaHJlZiIsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDMsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAzIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsxfSwKICAgICdpbnRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDEgaXMgaW50ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsyfSwKICAgICdleHRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDIgaXMgZXh0ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnszfSwKICAgICdwdWJsaWMnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgokU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gWyAncHVibGljJywgJ2V4dGVybmFsJyBdLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDIsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAyIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnsyfSwKICAgICdleHRlcm5hbCcsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDIgaXMgZXh0ZXJuYWwiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlVHlwZUxpc3QtPnszfSwKICAgICdwdWJsaWMnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgokU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gWydpbnRlcm5hbCddLAogICAgVXNlcklEID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIga2V5cyAleyRTdGF0ZVR5cGVMaXN0fSwKICAgIDEsCiAgICAiU3RhdGVUeXBlTGlzdCgpIGhhcyAxIGtleSIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezF9LAogICAgJ2ludGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMSBpcyBpbnRlcm5hbCIsCik7CgojIENvbnRlbnRUeXBlU2V0KCkgdGVzdHMKCm15ICRGQVFJdGVtSUQxID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsICAgICMgKG9wdGlvbmFsKQogICAgVmFsaWRJRCAgICAgPT4gMSwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywgICAgIyBvciAndGV4dC9odG1sJwogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgdW5kZWYsCiAgICAkRkFRSXRlbUlEMSwKICAgICJGQVFBZGQoKSIKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8YnIgLz4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbSA8YnIgLz4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvbGk+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxsaT5TeW1wdG9tIDwvbGk+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L29sPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8b2w+U3ltcHRvbSA8L29sPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC91bD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHVsPlN5bXB0b20gPC91bD4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvdGFibGU+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzx0YWJsZT5TeW1wdG9tIDwvdGFibGU+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3RyPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dHI+U3ltcHRvbSA8L3RyPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC90ZD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHRkPlN5bXB0b20gPC90ZD4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvdGQ+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzx0ZD5TeW1wdG9tIDwvdGQ+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L2Rpdj4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGRpdj5TeW1wdG9tIDwvZGl2PicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9vPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8bz5TeW1wdG9tIDwvbz4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvc3Bhbj4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHNwYW4+U3ltcHRvbSA8L3NwYW4+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3A+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxwPlN5bXB0b20gPC9wPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9wcmU+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxwcmU+U3ltcHRvbSA8L3ByZT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvaDE+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxoMT5TeW1wdG9tIDwvaDE+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L2g5PicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8aDk+U3ltcHRvbSA8L2g5PicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggb3V0IEhUTUwgdGFncycsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tICcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvdT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHU+U3ltcHRvbSA8L3U+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9kaWI+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxkaWI+U3ltcHRvbSA8L2RpYj4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3NwYW0+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxzcGFtPlN5bXB0b20gPC9zcGFtPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9wbGFpbicsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIGZvciBteSAkQ29udGVudFR5cGVSYXcgKHF3KGF1dG8gdGV4dC9wbGFpbiB0ZXh0L2h0bWwpKSB7CgogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRDb250ZW50VHlwZVJhdyBlcSAnYXV0bycgPyAnJyA6ICRDb250ZW50VHlwZVJhdzsKCiAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdC0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAleyAkVGVzdC0+e1VwZGF0ZX0gfSwKICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0LT57SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFDb250ZW50VHlwZVNldCgKICAgICAgICAgICAgRkFRSXRlbUlEcyAgPT4gWyAkVGVzdC0+e0l0ZW1JRH0gXSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICk7CgogICAgICAgIG15ICRFeHBlY3RlZFJlc3VsdCA9ICRDb250ZW50VHlwZVJhdyBlcSAnYXV0bycgPyAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0QXV0b30gOiAkQ29udGVudFR5cGU7CgogICAgICAgICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3QtPntJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRGQVFEYXRhe0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgJEV4cGVjdGVkUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENvbnRlbnRUeXBlIGFmdGVyIHNldCB0byAkQ29udGVudFR5cGVSYXciLAogICAgICAgICk7CiAgICB9Cn0KCiVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgVXNlcklEID0+IDEsCik7CiRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRRGF0YSwKICAgIEl0ZW1JRCAgPT4gJEZBUUl0ZW1JRDEsCiAgICBWYWxpZElEID0+IDIsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUVVwZGF0ZSwKICAgICJGQVFVcGRhdGUoKSBzZXQgRkFRICRGQVFJdGVtSUQxIHRvIGludmFsaWQiLAopOwoKbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBUeXBlcyAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICBVc2VySUQgPT4gMSwKKTsKCm15ICRBcnRpY2xlQ291bnQgPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgIENhdGVnb3J5SURzID0+IFsgMSwgXSwKICAgIEl0ZW1TdGF0ZXMgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICBWYWxpZCAgICAgICA9PiAwLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJEFydGljbGVDb3VudCwKICAgIDAsCiAgICAiRkFRQ291bnQoKSBWYWxpZCBhbmQgSW52YWxpZCIsCik7CgpteSAkQXJ0aWNsZUNvdW50VmFsaWQgPSAkRkFRT2JqZWN0LT5GQVFDb3VudCgKICAgIENhdGVnb3J5SURzID0+IFsgMSwgXSwKICAgIEl0ZW1TdGF0ZXMgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICBWYWxpZCAgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJEFydGljbGVDb3VudFZhbGlkLAogICAgMCwKICAgICJGQVFDb3VudCgpIFZhbGlkIiwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEFydGljbGVDb3VudFZhbGlkIDwgJEFydGljbGVDb3VudCA/IDEgOiAwLAogICAgIlZhbGlkIEl0ZW1zIGFyZSBsZXNzIHRoYW4gVmFsaWQgYW5kIEludmFsaWQgKCRBcnRpY2xlQ291bnRWYWxpZCA8ICRBcnRpY2xlQ291bnQpIHdpdGggdHJ1ZSIsCik7CgojIFRlc3QgRkFRQ291bnQoKSB3aXRoIG11bHRpcGxlIENhdGVnb3JpZXMsIHNlZSBidWcjNzk4MC4KbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgQENhdGVnb3J5SURzOwpteSAkQ291bnQgPSAwOwpmb3IgbXkgJEluZGV4ICggMSAuLiAzICkgewoKICAgICMgQ3JlYXRlIHRlc3QgQ2F0ZWdvcnkuCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICRJbmRleCAuICdDYXRlZ29yeScgLiAkUmFuZG9tSUQsCiAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIkNhdGVnb3J5SUQgJENhdGVnb3J5SUQgaXMgY3JlYXRlZCIKICAgICk7CiAgICBwdXNoIEBDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CgogICAgIyBDcmVhdGUgdGVzdCBGQVEuCiAgICBteSAkRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJEluZGV4IC4gJ0ZBUScgLiAkUmFuZG9tSUQsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFJRCwKICAgICAgICAiRkFRSUQgJEZBUUlEIGlzIGNyZWF0ZWQiCiAgICApOwoKICAgICRDb3VudCsrOwp9CgpteSAkTXVsdGlDYXRlZ29yeUFydGljbGVDb3VudCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgQ2F0ZWdvcnlJRHMgPT4gW0BDYXRlZ29yeUlEc10sCiAgICBJdGVtU3RhdGVzICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgVmFsaWQgICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CiRTZWxmLT5JcygKICAgICRNdWx0aUNhdGVnb3J5QXJ0aWNsZUNvdW50LAogICAgJENvdW50LAogICAgIkZBUUNvdW50KCkgd2l0aCBtdWx0aXBsZSBDYXRlZ29yaWVzIHN1Y2Nlc3MiCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSByZXN0b3JlIGRhdGFiYXNlCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgc2V0IGNvbmZpZyBvcHRpb25zCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPlNldCgKICAgIEtleSAgID0+ICdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgZ2VuZXJhdGUgYSByYW5kb20gc3RyaW5nIHRvIGhlbHAgc2VhcmNoZXMKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiMgY3JlYXRlIGRpZmZlcmVudCB1c2VycyBmb3IgQ3JlYXRlZFVzZXJJRHMgc2VhcmNoCm15IEBBZGRlZFVzZXJzOwpmb3IgbXkgJENvdW50ZXIgKCAxIC4uIDQgKSB7CiAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJywgJ2ZhcV9hcHByb3ZhbCcgXSwKICAgICk7CiAgICBteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICApOwogICAgcHVzaCBAQWRkZWRVc2VycywgJFVzZXJJRDsKfQoKbXkgQEFkZGVkRkFRczsKCiMgYWRkIHNvbWUgRkFRcwpteSAlRkFRQWRkVGVtcGxhdGUgPSAoCiAgICBUaXRsZSAgICAgICA9PiAiU29tZSBUZXh0ICRSYW5kb21JRCIsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAkUmFuZG9tSUQsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAopOwoKIyBmcmVlemUgdGltZQokSGVscGVyLT5GaXhlZFRpbWVTZXQoKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkQ291bnRlciAoIDEgLi4gMiApIHsKICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAlRkFRQWRkVGVtcGxhdGUsCiAgICAgICAgVXNlcklEID0+ICRBZGRlZFVzZXJzWyAkQ291bnRlciAtIDEgXSwKICAgICk7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgIHVuZGVmLAogICAgICAgICRGQVFJRCwKICAgICAgICAiRkFRQWRkKCkgRkFRSUQ6JyRGQVFJRCcgZm9yIEZBUVNlYXJjaCgpIiwKICAgICk7CgogICAgcHVzaCBAQWRkZWRGQVFzLCAkRkFRSUQ7CgogICAgIyBhZGQgMSBtaW51dGUgdG8gZnJvemVuIHRpbWUKICAgICRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwp9CgojIGFkZCBzb21lIHZvdGVzCm15IEBWb3Rlc1RvQWRkID0gKAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1swXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDEwMCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMicsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1swXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjMnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMV0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzFdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMicsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAoKKTsKZm9yIG15ICRWb3RlIChAVm90ZXNUb0FkZCkgewogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5Wb3RlQWRkKCAleyRWb3RlfSApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzLAogICAgICAgICJWb3RlQWRkKCk6IEZBUUlEOickVm90ZS0+e0l0ZW1JRH0nIElQOickVm90ZS0+e0lQfScgUmF0ZTonJFZvdGUtPntSYXRlfScgd2l0aCB0cnVlIiwKICAgICk7Cn0KCiMgZG8gdm90ZSBzZWFyY2ggdGVzdHMKbXkgJVNlYXJjaENvbmZpZ1RlbXBsYXRlID0gKAogICAgS2V5d29yZCAgICAgICAgICA9PiAiJFJhbmRvbUlEIiwKICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0ZBUUlEJ10sCiAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgVXNlcklEICAgICAgICAgICA9PiAxLAoKKTsKbXkgQFRlc3RzID0gKAoKICAgICMgdm90ZXMgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgU2ltcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgU21hbGxlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gMywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDIsIDMgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAxLCAyIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgMywgMiBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFdyb25nIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFs0XQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIFJhdGUgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IDY2LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDUwLCA2Ni42NyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEdyZWF0ZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgNDAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY2IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgNjYsIDYwIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY3IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBXcm9uZyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFsxMF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gWyA1MCwgNjAgXSwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbXBsZXggdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBSYXRlLCBDb21wbGV4ICsgV3JvbmcgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gWyAyLCAzLCA0IF0sCiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBbM10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgIDUwIF0sCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiBbIDEwMCwgMTIwIF0sCiAgICAgICAgICAgICAgICBMb3dlclRoYW4gICA9PiBbOTldLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIG90aGVyIHRlc3RzCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1N0YXRlcyBIYXNoIENvcnJlY3QgSURzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAxID0+ICdJbnRlcm5hbCcsCiAgICAgICAgICAgICAgICAyID0+ICdFeHRlcm5hbCcsCiAgICAgICAgICAgICAgICAzID0+ICdQdWJsaWMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsgJEFkZGVkRkFRc1swXSwgJEFkZGVkRkFRc1sxXSBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1N0YXRlcyBIYXNoIEluY29ycmVjdCBJRHMgKEZsb2F0KScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBTdGF0ZXMgPT4gewogICAgICAgICAgICAgICAgMS4xID0+ICdJbnRlcm5hbCcsCiAgICAgICAgICAgICAgICAyLjIgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgIDMuMyA9PiAnUHVibGljJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdTdGF0ZXMgSGFzaCBJbmNvcnJlY3QgSURzIChTdHJpbmcpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAnSW50ZXJuYWwnID0+ICdJbnRlcm5hbCcsCiAgICAgICAgICAgICAgICAnRXh0ZXJuYWwnID0+ICdFeHRlcm5hbCcsCiAgICAgICAgICAgICAgICAnUHVibGljJyAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKCik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICBteSBARkFRSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEZBUUlEcywKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRkFRU2VhcmNoKCkiLAogICAgKTsKfQoKIyB0aW1lIGJhc2VkIHRlc3RzCgojIHVwZGF0ZSBGQVFzCm15ICVGQVFVcGRhdGVUZW1wbGF0ZSA9ICgKICAgIFRpdGxlICAgICAgID0+ICJOZXcgVGV4dCAkUmFuZG9tSUQiLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJFJhbmRvbUlELAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKKTsKCiMgYWRkIDEgbWludXRlIHRvIGZyb3plbiB0aW1lCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRVXBkYXRlVGVtcGxhdGUsCiAgICBJdGVtSUQgPT4gJEFkZGVkRkFRc1swXSwKICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1syXSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRVXBkYXRlKCkgRkFRSUQ6JyRBZGRlZEZBUXNbMF0nIGZvciBGQVFTZWFyY2goKSIsCik7CgokSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCiRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgJUZBUVVwZGF0ZVRlbXBsYXRlLAogICAgSXRlbUlEID0+ICRBZGRlZEZBUXNbMV0sCiAgICBVc2VySUQgPT4gJEFkZGVkVXNlcnNbM10sCik7CgokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUVVwZGF0ZSgpIEZBUUlEOickQWRkZWRGQVFzWzFdJyBmb3IgRkFRU2VhcmNoKCkiLAopOwoKIyBhZGQgMiBtaW51dGVzIHRvIGZyb3plbiB0aW1lCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoMTIwKTsKCiMgZ2V0IHRpbWUgb2JqZWN0Cm15ICRUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpbWUnKTsKCm15ICRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKCm15ICREYXRlTWludXMyTWlucyA9ICRUaW1lT2JqZWN0LT5TeXN0ZW1UaW1lMlRpbWVTdGFtcCgKICAgIFN5c3RlbVRpbWUgPT4gKCAkU3lzdGVtVGltZSAtIDEyMCAtIDEgKSwKKTsKbXkgJERhdGVNaW51czVNaW5zID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUyVGltZVN0YW1wKAogICAgU3lzdGVtVGltZSA9PiAoICRTeXN0ZW1UaW1lIC0gMzAwIC0gMSApLAopOwpteSAkRGF0ZU1pbnVzNk1pbnMgPSAkVGltZU9iamVjdC0+U3lzdGVtVGltZTJUaW1lU3RhbXAoCiAgICBTeXN0ZW1UaW1lID0+ICggJFN5c3RlbVRpbWUgLSAzNjAgLSAxICksCik7CgpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJNaW51dGVzIDMgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzID0+IDMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyTWludXRlcyA2IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlcyA9PiA2LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgNiBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gNiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lTmV3ZXJNaW51dGVzIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDUsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU5ld2VyRGF0ZSA1IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU9sZGVyRGF0ZSBDcmVhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXM2TWlucywKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJERhdGVNaW51czVNaW5zLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVPbGRlck1pbnV0ZXMgMyBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gMywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzIDIgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzID0+IDIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU9sZGVyRGF0ZSAyIE1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzMk1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU5ld2VyRGF0ZSAyIE1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAkRGF0ZU1pbnVzMk1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9Cik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBGQVFJRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgY3JlYXRlZCB1c2VyIHRlc3RzCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWRVc2VySURzIDEnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1swXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWRVc2VySURzIDInLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1sxXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWRVc2VySURzIDEgYW5kIDInLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1swXSwgJEFkZGVkVXNlcnNbMV0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBDcmVhdGVkVXNlcklEcyBGb3JtYXQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gJEFkZGVkVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAopOwoKIyBsYXN0IGNoYW5nZWQgdXNlciB0ZXN0cwpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMgMycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1syXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcyA0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbICRBZGRlZFVzZXJzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTGFzdENoYW5nZWRVc2VySURzIDMgYW5kIDQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMl0sICRBZGRlZFVzZXJzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgTGFzdENoYW5nZWRVc2VySURzIEZvcm1hdCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gJEFkZGVkVXNlcnNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gW10sCiAgICB9LAopOwoKIyBleGVjdXRlIHRoZSB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15IEBGQVFJRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxARkFRSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGFwcHJvdmFsIHRlc3RzCiMgdXBkYXRlIGRhdGFiYXNlIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBhcHByb3ZhbCB0aWNrZXQKcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICBTUUwgPT4gJwogICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgIFNFVCBhcHByb3ZlZCA9ID8KICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgQmluZCA9PiBbCiAgICAgICAgXDAsCiAgICAgICAgXCRBZGRlZEZBUXNbMV0sCiAgICBdLAopOwoKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnQXBwcm92ZWQgMScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBBcHByb3ZlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0FwcHJvdmVkIDAnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gMCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBGQVFJRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgZXhlY3V0ZSBvbGQgdGVzdHMKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIi0tRXhlY3V0ZSBGb3JtZXIgVGVzdHMtLSIsCik7CnsKICAgIG15ICRGQVFJRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgID0+IDIsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICAgICAgS2V5d29yZHMgICAgPT4gInNvbWUkUmFuZG9tSUQga2V5d29yZHMyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlEMSwKICAgICAgICAiRkFRQWRkKCkgLSAxIiwKICAgICk7CgogICAgIyBhZGQgMSBtaW51dGUgdG8gZnJvemVuIHRpbWUKICAgICRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKICAgIG15ICRGQVFJRDIgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICBLZXl3b3JkcyAgICA9PiAnJywKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRkFRSUQyLAogICAgICAgICJGQVFBZGQoKSAtIDIiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJUtleXdvcmRzID0gKAogICAgICAgIEtleXdvcmQxID0+ICJzb21lMSRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDIgPT4gInNvbWUyJFJhbmRvbUlEIiwKICAgICAgICBLZXl3b3JkMyA9PiAic29tZTMkUmFuZG9tSUQiLAogICAgICAgIEtleXdvcmQ0ID0+ICJzb21lNCRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDUgPT4gInNvbWU1JFJhbmRvbUlEIiwKICAgICk7CgogICAgbXkgJEZBUUlEMyA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAnVGVzdCBGQVEtMycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgS2V5d29yZHMgICAgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX0gJEtleXdvcmRze0tleXdvcmQyfSAkS2V5d29yZHN7S2V5d29yZDN9ICRLZXl3b3Jkc3tLZXl3b3JkNX0iLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlEMywKICAgICAgICAiRkFRQWRkKCkgLSAzIiwKICAgICk7CgogICAgIyBhZGQgMSBtaW51dGUgdG8gZnJvemVuIHRpbWUKICAgICRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKICAgIG15ICRGQVFJRDQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGVzdCBGQVEtNCcsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAiJEtleXdvcmRze0tleXdvcmQxfSwkS2V5d29yZHN7S2V5d29yZDJ9LCRLZXl3b3Jkc3tLZXl3b3JkM30sJEtleXdvcmRze0tleXdvcmQ0fSIsCiAgICAgICAgLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRGQVFJRDQsCiAgICAgICAgIkZBUUFkZCgpIC0gNCIsCiAgICApOwoKICAgICMgYWRkIDEgbWludXRlIHRvIGZyb3plbiB0aW1lCiAgICAkSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCiAgICBteSAkRkFRSUQ1ID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgIFRpdGxlICAgICAgPT4gJ1Rlc3QgRkFRLTUnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgICAgIEtleXdvcmRzICAgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX07JEtleXdvcmRze0tleXdvcmQyfTskS2V5d29yZHN7S2V5d29yZDN9OyRLZXl3b3Jkc3tLZXl3b3JkNH0iLAogICAgICAgICwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRkFRSUQ1LAogICAgICAgICJGQVFBZGQoKSAtIDQiLAogICAgKTsKCiAgICAjIHJlc3RvcmUgdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lVW5zZXQoKTsKCiAgICBAVGVzdHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFdoYXQgICAgPT4gJypzKicsCiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICJzb21lJFJhbmRvbUlEKiIsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnVm90ZXMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgd2l0aCBzcGFjZXMgLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfSAkS2V5d29yZHN7S2V5d29yZDJ9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDMsCiAgICAgICAgICAgICAgICAkRkFRSUQ0LAogICAgICAgICAgICAgICAgJEZBUUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyB3aXRoIGNvbW1hIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMn0sJEtleXdvcmRze0tleXdvcmQxfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSUQzLAogICAgICAgICAgICAgICAgJEZBUUlENCwKICAgICAgICAgICAgICAgICRGQVFJRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgd2l0aCBzZW1pY29sb24gLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfTskS2V5d29yZHN7S2V5d29yZDJ9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDMsCiAgICAgICAgICAgICAgICAkRkFRSUQ0LAogICAgICAgICAgICAgICAgJEZBUUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkczEgS2V5d29yZHMzICB3aXRoIHNwYWNlcyAtIGFsbCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICIkS2V5d29yZHN7S2V5d29yZDF9ICRLZXl3b3Jkc3tLZXl3b3JkM30iLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMywKICAgICAgICAgICAgICAgICRGQVFJRDQsCiAgICAgICAgICAgICAgICAkRkFRSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzMSBLZXl3b3JkczMgd2l0aCBjb21tYSAtIGFsbCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICIkS2V5d29yZHN7S2V5d29yZDF9LCRLZXl3b3Jkc3tLZXl3b3JkM30iLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMywKICAgICAgICAgICAgICAgICRGQVFJRDQsCiAgICAgICAgICAgICAgICAkRkFRSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzMSBLZXl3b3JkczMgd2l0aCBzZW1pY29sb24gLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfTskS2V5d29yZHN7S2V5d29yZDN9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDMsCiAgICAgICAgICAgICAgICAkRkFRSUQ0LAogICAgICAgICAgICAgICAgJEZBUUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBjb21tb24ga2V5d29yZCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3Jkc3tLZXl3b3JkM30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSUQzLAogICAgICAgICAgICAgICAgJEZBUUlENCwKICAgICAgICAgICAgICAgICRGQVFJRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgY29tbW9uIGtleXdvcmQgd2l0aCB3aWxkY2FyZHMnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAnKicgLiAkS2V5d29yZHN7S2V5d29yZDN9IC4gJyonLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMywKICAgICAgICAgICAgICAgICRGQVFJRDQsCiAgICAgICAgICAgICAgICAkRkFRSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIG9ubHkgS2V5d29yZDUnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZHN7S2V5d29yZDV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMywKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ0JywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmRze0tleXdvcmQ0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDQsCiAgICAgICAgICAgICAgICAkRkFRSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIG9ubHkgS2V5d29yZDUgLSB1cHBlcmNhc2Ugc3RyaW5nJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gdWMgJEtleXdvcmRze0tleXdvcmQ1fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRGQVFJRDMsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgb25seSBLZXl3b3JkNCAtIGZpcnN0IGNoYXJhY3RlciB1cHBlcmNhc2UnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiB1Y2ZpcnN0ICRLZXl3b3Jkc3tLZXl3b3JkNH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSUQ0LAogICAgICAgICAgICAgICAgJEZBUUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdUaXRsZScsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICd0SVRMZScsCiAgICAgICAgICAgICAgICBXaGF0ICAgID0+ICdsJywKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gWydDcmVhdGVkJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSUQyLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ1doYXQgKExpdGVyYWwpJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJycsCiAgICAgICAgICAgICAgICBXaGF0ICAgID0+ICdzb2x1dGlvbiBmb3VuZCcsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnQ3JlYXRlZCddLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdXaGF0IChBTkQpJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJycsCiAgICAgICAgICAgICAgICBXaGF0ICAgID0+ICdzb2x1dGlvbitmb3VuZCcsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnQ3JlYXRlZCddLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEZBUUlEMSwKICAgICAgICAgICAgICAgICRGQVFJRDIsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAgICAgbXkgQEZBUUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnKicsCiAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxNTAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgJXsgJFRlc3QtPntDb25maWd9IH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICBcQEZBUUlEcywKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSwgRkFRU2VhcmNoKCkiLAogICAgICAgICk7CiAgICB9Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkRkFRT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKIyBzZXQgY29uZmlnIG9wdGlvbnMKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcsCiAgICBWYWx1ZSA9PiAwLAopOwoKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0N1c3RvbWVyR3JvdXBTdXBwb3J0JywKICAgIFZhbHVlID0+IDAsCik7CgojIGNyZWF0ZSBzb21lIGN1c3RvbWVyIHVzZXJzCm15IEBDdXN0b21lclVzZXJzOwpmb3IgKCAwIC4uIDEgKSB7CiAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKICAgIHB1c2ggQEN1c3RvbWVyVXNlcnMsICRUZXN0VXNlckxvZ2luOwp9CgpteSAkUmFuZG9tTnVtYmVyID0gJEhlbHBlci0+R2V0UmFuZG9tTnVtYmVyKCk7CgpteSAlU3RhdGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgVXNlcklEID0+IDEsCik7Cm15ICVSZXZlcnNlU3RhdGVMaXN0ID0gcmV2ZXJzZSAlU3RhdGVMaXN0OwoKIyBDYWxsIHRoaXMgZnVuY3Rpb24gYXQgdGhlIGJlZ2lubmluZywgdG8gY2hlY2sgaWYgdGhlIGNhY2hlIGNsZWFudXAgd29ya3MgY29ycmVjdGx5IGFmdGVyIG5ldyBhcnRpY2xlIHdhcyBjcmVhdGVkLgokRkFRT2JqZWN0LT5GQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCgKICAgIEN1c3RvbWVyVXNlciA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKIyBkZWZpbmUgdGhlIHRpY2tldHMgZm9yIHRoZSBzdGF0aXN0aWMgcmVzdWx0IHRlc3RzCm15IEBGQVFJdGVtcyA9ICgKICAgIHsKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+ICRSZXZlcnNlU3RhdGVMaXN0eydleHRlcm5hbCAoY3VzdG9tZXIpJ30sICAgICMgJ2V4dGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgPT4KICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgZXhhbXBsZSRSYW5kb21OdW1iZXIgJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IEV4YW1wbGUnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gJFJldmVyc2VTdGF0ZUxpc3R7J2V4dGVybmFsIChjdXN0b21lciknfSwgICAgIyAnZXh0ZXJuYWwnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gImZhcSRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIiLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQgRXhhbXBsZScsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9LCAgICAgICAgICAgICAgICAgICAgIyAnZXh0ZXJuYWwnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2RlJwogICAgICAgIEtleXdvcmRzICAgID0+ICJmYXEkUmFuZG9tTnVtYmVyIGtleXdvcmQkUmFuZG9tTnVtYmVyIEl0U20kUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IFB1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsncHVibGljIChhbGwpJ30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gIkZBUSRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgcHVibGljJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCBJbnRlcm5hbCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnaW50ZXJuYWwgKGFnZW50KSd9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnaW50ZXJuYWwnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2VuJwogICAgICAgIEtleXdvcmRzICAgID0+ICJ0aWNrZXQkUmFuZG9tTnVtYmVyIEtleVdvcmQkUmFuZG9tTnVtYmVyIGlUc20kUmFuZG9tTnVtYmVyIGludGVybmFsJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgIH0sCik7CgojIENyZWF0ZSBzb21lIGZhcSBpdGVtcyBmb3IgdGhlIHRlc3QuCm15IEBGQVFJdGVtSURzOwoKRkFRSVRFTToKZm9yIG15ICRGQVFJdGVtIChARkFRSXRlbXMpIHsKCiAgICBteSAkRkFRSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICV7JEZBUUl0ZW19LAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRkFRSXRlbUlELAogICAgICAgICJGQVFBZGQoKSBzdWNjZXNzZnVsIGZvciB0ZXN0IC0gRkFRSXRlbUlEICRGQVFJdGVtSUQiLAogICAgKTsKCiAgICBwdXNoIEBGQVFJdGVtSURzLCAkRkFRSXRlbUlEOwp9CgojIERlZmluZSBzb21lIHRlc3QgZm9yIHRoZSBmdW5jdGlvbiAnRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgZG9lcyBub3QgY29udGFpbiBhbGwgbmVjZXNzYXJ5IGRhdGEgZm9yIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBGYWlscyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0ID0+IHt9LAogICAgICAgIFJlZmVyZW5jZURhdGEgICAgICAgICAgICAgICAgID0+IHt9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICA9PiAnVGVzdCB3aXRoIGEgY3VzdG9tZXIgdXNlciBmb3IgRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgICIkUmFuZG9tTnVtYmVyLiRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiZXhhbXBsZSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJrZXl3b3JkJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwdWJsaWMkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+ICJUZXN0IHdpdGggYSBjdXN0b21lciB1c2VyLCBidXQgb25seSB3aXRoIGxhbmd1YWdlICdlbicgZm9yIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICAgICAgTGFuZ3VhZ2VzICAgID0+IFsnZW4nXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiZXhhbXBsZSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImtleXdvcmQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwdWJsaWMkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+ICJUZXN0IHdpdGggYSBjdXN0b21lciB1c2VyLCBidXQgb25seSB3aXRoIGxhbmd1YWdlICdkZScgZm9yIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICAgICAgTGFuZ3VhZ2VzICAgID0+IFsnZGUnXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpdHNtJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJrZXl3b3JkJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlRlc3Qgd2l0aCBhIGN1c3RvbWVyIHVzZXIgd2l0aCBsYW5ndWFnZSAnZW4nIGFuZCAnZGUnIGZvciBGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCIsCiAgICAgICAgRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgICAgIExhbmd1YWdlcyAgICA9PiBbICdlbicsICdkZScgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiZXhhbXBsZSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJrZXl3b3JkJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJwdWJsaWMkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAopOwoKIyBkZWZpbmUgdGVzdCBjb3VudGVyCm15ICRUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNoZWNrIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0IGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gfHwgcmVmICRUZXN0LT57RkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3R9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IE5vIEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0IGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBwcmludCB0ZXN0IGNhc2UgZGVzY3JpcHRpb24KICAgIGlmICggJFRlc3QtPntEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6ICRUZXN0LT57RGVzY3JpcHRpb259IiwKICAgICAgICApOwogICAgfQoKICAgIG15ICVGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPkZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0KAogICAgICAgICV7ICRUZXN0LT57RkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3R9IH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntGYWlsc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAlRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPyAxIDogMCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QoKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9ICkgewoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0eyRLZXl3b3JkfSB8fCBbXSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPnskS2V5d29yZH0sCiAgICAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdCgpIC0gJEtleXdvcmQgLSB0ZXN0IHRoZSByZXN1bHQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQpjb250aW51ZSB7CiAgICAkVGVzdENvdW50Kys7Cn0KCiMgQ2hlY2sgaWYgdGhlIGNhY2hlIGV4aXN0cyBmb3IgdGhlIGxhc3QgZnVuY3Rpb24gY2FsbC4KbXkgQExhbmd1YWdlSURzOwoKTEFOR1VBR0VOQU1FOgpmb3IgbXkgJExhbmd1YWdlTmFtZSAoIEB7ICRUZXN0c1stMV0tPntGQVFLZXl3b3JkQ3VzdG9tZXJBcnRpY2xlTGlzdH0tPntMYW5ndWFnZXN9IH0gKSB7CiAgICBteSAkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlTmFtZSwKICAgICk7CiAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgcHVzaCBATGFuZ3VhZ2VJRHMsICRMYW5ndWFnZUlEOwp9CgpteSAkQ3VzdG9tZXJDYXRlZ29yeUlEcyA9ICRGQVFPYmplY3QtPkN1c3RvbWVyQ2F0ZWdvcnlTZWFyY2goCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RzWy0xXS0+e0ZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0fS0+e0N1c3RvbWVyVXNlcn0sCiAgICBNb2RlICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKbXkgJENhY2hlS2V5ID0gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCc7CgppZiAoQExhbmd1YWdlSURzKSB7CiAgICAkQ2FjaGVLZXkgLj0gJzo6TGFuZ3VhZ2UnIC4gam9pbiAnOjonLCBATGFuZ3VhZ2VJRHM7Cn0KJENhY2hlS2V5IC49ICc6OkNhdGVnb3J5SURzJyAuIGpvaW4gJzo6JywgQHskQ3VzdG9tZXJDYXRlZ29yeUlEc307CgpteSAkTGFzdEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0Q2FjaGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgIEtleSAgPT4gJENhY2hlS2V5LAopOwoKZm9yIG15ICRLZXl3b3JkICggc29ydCBrZXlzICV7ICRUZXN0c1stMV0tPntSZWZlcmVuY2VEYXRhfSB9ICkgewoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkTGFzdEZBUUtleXdvcmRDdXN0b21lckFydGljbGVMaXN0Q2FjaGUtPnskS2V5d29yZH0gfHwgW10sCiAgICAgICAgJFRlc3RzWy0xXS0+e1JlZmVyZW5jZURhdGF9LT57JEtleXdvcmR9LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENhY2hlIC0gRkFRS2V5d29yZEN1c3RvbWVyQXJ0aWNsZUxpc3QoKSAtICRLZXl3b3JkIC0gdGVzdCB0aGUgcmVzdWx0IiwKICAgICk7Cn0KCiMgRGVmaW5lIHNvbWUgdGVzdCBmb3IgdGhlIGZ1bmN0aW9uICdSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcuCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICA9PiAnVGVzdCBkb2VzIG5vdCBjb250YWluIGFsbCBuZWNlc3NhcnkgZGF0YSBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIEZhaWxzICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICcnLAogICAgICAgICAgICBCb2R5ICAgID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7fSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gJ1Rlc3Qgd2l0aCBhIGtleXdvcmQgaW4gdGhlIHN1YmplY3QgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSAgICA9PiAiJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gNQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDQKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICAjICAgLSBGQVFBcnRpY2xlIDMgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICJpdHNtJFJhbmRvbU51bWJlciwgdGlja2V0JFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBVc2VySUQgID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gNQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDQKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICAjICAgLSBGQVFBcnRpY2xlIDMgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgICAgICdUZXN0IHdpdGggc29tZSBodG1sIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5ICh3aXRoIGh0bWwgYW5kIGxpbmspIGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgPT4KICAgICAgICAgICAgICAgICIkUmFuZG9tTnVtYmVyIGl0c20kUmFuZG9tTnVtYmVyIHRpY2tldCRSYW5kb21OdW1iZXIgPGJyIC8+a2V5d29yZCRSYW5kb21OdW1iZXIgSVRTTSRSYW5kb21OdW1iZXIuIFsxXSBodHRwczovL2ZhcS5jb20vIiwKICAgICAgICAgICAgVXNlcklEID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgID0+ICJUZXN0IG9ubHkgZm9yIHRoZSBsYW5ndWFnZSAnZGUnIGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCIsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIkZBUSRSYW5kb21OdW1iZXIuIiwKICAgICAgICAgICAgQm9keSAgICAgID0+ICIkUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgTGFuZ3VhZ2VzID0+IFsnZGUnXSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gNQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDQKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnVGVzdCB3aXRoIHNvbWUga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgYW5kIGEgbGltaXQgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSAgICA9PiAiaXRzbSRSYW5kb21OdW1iZXI7IHRpY2tldCRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgSVRTTSRSYW5kb21OdW1iZXIuIiwKICAgICAgICAgICAgTGltaXQgICA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEUuZy4KICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBSYW5kb21OdW1uZXIuUmFuZG9tTnVtZXIgKDIpCiAgICAjICAgLSBmYXEgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiAyCiAgICAjICAgLSBGQVFBcnRpY2xlIDQgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBhbmQgYSBsaW1pdCBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIiRSYW5kb21OdW1iZXIuJFJhbmRvbU51bWJlciBmYXEkUmFuZG9tTnVtYmVyICRSYW5kb21OdW1iZXIuJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBMaW1pdCAgID0+IDIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgIF0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNoZWNrIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gfHwgcmVmICRUZXN0LT57UmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3R9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IE5vIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBwcmludCB0ZXN0IGNhc2UgZGVzY3JpcHRpb24KICAgIGlmICggJFRlc3QtPntEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6ICRUZXN0LT57RGVzY3JpcHRpb259IiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPlJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0KAogICAgICAgICV7ICRUZXN0LT57UmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3R9IH0sCiAgICApOwoKICAgIGlmICggJFRlc3QtPntGYWlsc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICBAUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPyAxIDogMCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QoKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSBAUmVsYXRlZEZBUUFydGljbGVJRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3Q7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXEBSZWxhdGVkRkFRQXJ0aWNsZUlEcywKICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QoKSAtIHRlc3QgdGhlIHJlc3VsdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkVGVzdENvdW50Kys7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgojIGdldCBuZWVkZWQgb2JqZWN0cwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgQFRlc3RzICAgID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gTmFtZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gUGFyZW50SUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gIlRlc3RDYXRlZ29yeSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFZhbGlkSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdObyBVc2VySUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IE5vIENvbW1lbnQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkxJFJhbmRvbUlEIiwKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IEFTQ0lJJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVGVzdENhdGVnb3J5MiRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgVW5pY29kZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RDYXRlZ29yeTPDpMO8w5/DhMOWw5zigqzQuNGBw6HDqcOtw7rDusOBw4nDjcOaw7HDkSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQgw6TDvMOfw4TDlsOc4oKs0LjRgcOhw6nDrcO6w7rDgcOJw43DmsOxw5EnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKKTsKCm15ICVBZGRlZENhdGVnb3J5SURzOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkQ2F0ZWdvcnlJRCAvLyAwLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFERCgpIC0gV2l0aCBGYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gQ2F0ZWdvcnlBZGQoKSAtIFdpdGggVHJ1ZSIsCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAkQWRkZWRDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0sCiAgICAgICAgMSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFkZCgpIENhdGVnb3J5SUQgd2FzIG5vdCB1c2VkIHJldHVybmVkIGJlZm9yZSIsCiAgICApOwoKICAgICRBZGRlZENhdGVnb3J5SURzeyRDYXRlZ29yeUlEfSA9IDE7Cn0KCiMgVGVzdCBmb3IgYnVnIzExODg5IC0gQ2F0ZWdvcnlBZGQgcmV0dXJucyB3cm9uZyBDYXRlZ29yeUlEIGlmIHN1YmNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMuCiMgVGhlIGlkZWEgaXMgdG8gY3JlYXRlIHNldmVyYWwgcGFyZW50cyBhbmQgZm9yIGVhY2ggY3JlYXRlIGEgY2hpbGQgY2F0ZWdvcnksIGFsbCBjaGlsZHJlbiBoYXMgdGhlCiMgICBzYW1lIG5hbWUuCmZvciBteSAkUGFyZW50Q291bnQgKCAxIC4uIDEwICkgewoKICAgIG15ICRQYXJlbnRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RQYXJlbnQkUGFyZW50Q291bnQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkUGFyZW50Q2F0ZWdvcnlJRCwKICAgICAgICAiUGFyZW50ICRQYXJlbnRDb3VudCBDYXRlZ29yeUFkZCgpIC0gV2l0aCBUcnVlIiwKICAgICk7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRBZGRlZENhdGVnb3J5SURzeyRQYXJlbnRDYXRlZ29yeUlEfSwKICAgICAgICAxLAogICAgICAgICJQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JFBhcmVudENhdGVnb3J5SUR9ID0gMTsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2hpbGQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRDYXRlZ29yeUlELAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgLSBXaXRoIFRydWUiLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9LAogICAgICAgIDEsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgpOwpteSAkVXNlcklEICAgID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luICk7CgokU2VsZi0+VHJ1ZSgKICAgICRVc2VySUQsCiAgICAiVGVzdCB1c2VyICRVc2VySUQgY3JlYXRlZCIsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgpteSAkR0lEID0gJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgIE5hbWUgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCA9PiAnY29tbWVudCBkZXNjcmliaW5nIHRoZSBncm91cCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJEdJRCwKICAgICJHcm91cEFkZCgpIiwKKTsKCm15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SUQsCiAgICAiQ2F0ZWdvcnlBZGQoKSIsCik7CgpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgR3JvdXBJRHMgICA9PiBbJEdJRF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0Q2F0ZWdvcnlHcm91cCgpIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIENhdGVnb3J5SUQnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIFVzZXJJRCcsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7fSwKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAnTm8gcGVybWlzc2lvbnMnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAnJywKICAgICAgICAgICAgJ3JvJyA9PiAnJywKICAgICAgICAgICAgJ3J3JyA9PiAnJywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiJ3JvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIHJvID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICcnICAgPT4gJ3JvJywKICAgICAgICAgICAgJ3JvJyA9PiAncm8nLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICInbW92ZV9pbnRvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIG1vdmVfaW50byA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAnJyAgID0+ICcnLAogICAgICAgICAgICAncm8nID0+ICcnLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICIncncnIHBlcm1pc3Npb25zIiwKICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgcncgPT4gMSwKICAgICAgICB9LAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAncm8nLAogICAgICAgICAgICAncm8nID0+ICdybycsCiAgICAgICAgICAgICdydycgPT4gJ3J3JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgU2V0IG5ldyBwZXJtaXNzaW9ucwogICAgaWYgKCAkVGVzdC0+e1Blcm1pc3Npb259ICkgewogICAgICAgICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwVXNlckFkZCgKICAgICAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgICAgICBVSUQgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFRlc3QtPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRUeXBlICggJycsICdybycsICdydycgKSB7CgogICAgICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgICAgICAleyAkVGVzdC0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgVHlwZSA9PiAkVHlwZSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkUGVybWlzc2lvblN0cmluZywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmYWlsdXJlIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRFU1Q7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRQZXJtaXNzaW9uU3RyaW5nLAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0fS0+eyRUeXBlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmb3IgdHlwZSAkVHlwZSIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CgogICAgIyBSZW1vdmUgYWxsIHBlcm1pc3Npb25zCiAgICAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cFVzZXJBZGQoCiAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgIFVJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBQZXJtaXNzaW9uID0+IHt9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIFNvY2tldDsKdXNlIFlBTUw7CnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6TGFuZ3VhZ2VMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIHNldCB3ZWItc2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgc2V0IFVzZXJJRCBvbiAxCm15ICRVc2VySUQgPSAxOwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKIyBnZXQgcHVibGljIHN0YXRlcwpteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15ICRQdWJsaWNTdGF0ZUlEOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3RhdGVzICkgewogICAgaWYgKCAkU3RhdGVzeyRLZXl9ID1+IC9ecHVibGljLiovICkgewogICAgICAgICRQdWJsaWNTdGF0ZUlEID0gJEtleTsKICAgIH0KfQoKJFNlbGYtPklzTm90KAogICAgJFB1YmxpY1N0YXRlSUQsCiAgICB1bmRlZiwKICAgICJTZWFyY2ggZm9yIHB1YmxpYyBTdGF0ZUlEIiwKKTsKCiMgY2F0ZWdvcnkgb25lCm15ICRDYXRlZ29yeUlET25lID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURPbmUsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENhdGVnb3J5IiwKKTsKCiMgY2F0ZWdvcnkgdHdvCm15ICRDYXRlZ29yeUlEVHdvID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlUd28nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NoaWxkIENhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlET25lLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlEVHdvLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgojIGNhdGVnb3J5IHRocmVlCm15ICRDYXRlZ29yeUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICchIsKnJCUmLygpPT/DnCrDhMOWTDpMQCwuLScgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURUaHJlZSwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKIyBjYXRlZ29yeSBmb3VyCm15ICRDYXRlZ29yeUlERm91ciA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5Rm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gMCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlJREZvdXIsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRGQVFJRE9uZSA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCAuICdPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SURPbmUsCiAgICBTdGF0ZUlEICAgICA9PiAkUHVibGljU3RhdGVJRCwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgQXBwcm92ZWQgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlET25lLAogICAgIkZBUUFkZCgpIC0gRkFRIE9uZSIsCik7CgpteSAkRkFRSURUd28gPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnIFR3bycgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgU3RhdGVJRCAgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICBBcHByb3ZlZCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRSURUd28sCiAgICAiRkFRQWRkKCkgLSBGQVEgVHdvIiwKKTsKCm15ICRGQVFJRFRocmVlID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICAgPT4gJ1RpdGxlIOS9v+eUqOS4i+WIl+ivreiogCBUaHJlZScgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBTdGF0ZUlEICAgICA9PiAkUHVibGljU3RhdGVJRCwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnJywKICAgIEZpZWxkMSAgICAgID0+ICdMb29rIGZvciBtZSAnIC4gJFJhbmRvbUlEIC4gJyBvbiB0aGUgc2VhcmNoJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIEFwcHJvdmVkICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRGQVFJRFRocmVlLAogICAgIkZBUUFkZCgpIC0gRkFRIFRocmVlIiwKKTsKCiMgZ2V0IGNvbW1vbiBvYmplY3RzCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkTWFpbk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiMgZmlsZSBjaGVja3MKZm9yIG15ICRGaWxlIChxdyhiaW4gdHh0KSkgewogICAgbXkgJExvY2F0aW9uID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb21lJykKICAgICAgICAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9HZW5lcmljSW50ZXJmYWNlL0ZBUS9HSS1GQVEtVGVzdC11dGY4LTEuJEZpbGUiOwoKICAgIG15ICRDb250ZW50UmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICRMb2NhdGlvbiwKICAgICAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCiAgICApOwoKICAgIG15ICRBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAkRkFRSURUaHJlZSwKICAgICAgICBDb250ZW50ICAgICA9PiAkeyRDb250ZW50UmVmfSwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGVzdC8nIC4gJEZpbGUsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3Rlc3QuJyAuICRGaWxlLAogICAgICAgIElubGluZSAgICAgID0+IDAsICAgICAgICAgICAgICAgICAjICgwfDEsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBdHRhY2htZW50LAogICAgICAgICJBdHRhY2htZW50QWRkKCkgLSBGaWxlICIgLiAkRmlsZSwKICAgICk7Cn0KCm15ICRGQVFJREZvdXIgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnINCv0LfRi9C60L7QstGL0LUgRm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBTdGF0ZUlEICAgICA9PiAkUHVibGljU3RhdGVJRCwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgQXBwcm92ZWQgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEZBUUlERm91ciwKICAgICJGQVFBZGQoKSAtIEZBUSBGb3VyIiwKKTsKCiMgZ2V0IGxhbmd1YWdlcyBsaXN0Cm15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCm15IEBMYW5ndWFnZUxpc3Q7CmZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYW5ndWFnZXMgKSB7CiAgICBteSAlTGFuZ3VhZ2UgPSAoCiAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlc3skS2V5fSwKICAgICk7CiAgICBwdXNoIEBMYW5ndWFnZUxpc3QsIHslTGFuZ3VhZ2V9Owp9CgojIGdldCBGQVEKbXkgJUZBUU9uZSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlET25lLAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwpmb3JlYWNoIG15ICRLZXkgKCBrZXlzICVGQVFPbmUgKSB7CiAgICBpZiAoICEkRkFRT25leyRLZXl9ICkgewogICAgICAgICRGQVFPbmV7JEtleX0gPSAnJzsKICAgIH0KfQoKbXkgJUZBUVR3byA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlEVHdvLAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwpmb3JlYWNoIG15ICRLZXkgKCBrZXlzICVGQVFUd28gKSB7CiAgICBpZiAoICEkRkFRVHdveyRLZXl9ICkgewogICAgICAgICRGQVFUd297JEtleX0gPSAnJzsKICAgIH0KfQoKbXkgJUZBUVRocmVlID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkRkFRSURUaHJlZSwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRVGhyZWUgKSB7CiAgICBpZiAoICEkRkFRVGhyZWV7JEtleX0gKSB7CiAgICAgICAgJEZBUVRocmVleyRLZXl9ID0gJyc7CiAgICB9Cn0KCm15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlEVGhyZWUsCiAgICBTaG93SW5saW5lID0+IDEsICAgICAgICAgICAgICMgICAoIDB8MSwgZGVmYXVsdCAxKQogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwoKbXkgQEF0dGFjaG1lbnRzVGhyZWU7CmZvciBteSAkQXR0YWNobWVudCAoQEluZGV4KSB7CiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+ICRGQVFJRFRocmVlLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgJEZpbGV7SW5saW5lfSAgPSAkQXR0YWNobWVudC0+e0lubGluZX07CiAgICAkRmlsZXtGaWxlSUR9ICA9ICRBdHRhY2htZW50LT57RmlsZUlEfTsKCiAgICBwdXNoIEBBdHRhY2htZW50c1RocmVlLCB7JUZpbGV9Owp9CgpteSAlRkFRRm91ciA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEZBUUlERm91ciwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRRm91ciApIHsKICAgIGlmICggISRGQVFGb3VyeyRLZXl9ICkgewogICAgICAgICRGQVFGb3VyeyRLZXl9ID0gJyc7CiAgICB9Cn0KCiMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwpteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgIFZhbGlkICA9PiAxLAogICAgVHlwZSAgID0+ICdydycsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKbXkgQFB1YmxpY0NhdGVnb3J5TGlzdDsKZm9yIG15ICRLZXkgKCBzb3J0KCBrZXlzICV7JENhdGVnb3J5VHJlZX0gKSApIHsKICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICBJRCAgID0+ICRLZXksCiAgICAgICAgTmFtZSA9PiAkQ2F0ZWdvcnlUcmVlLT57JEtleX0sCiAgICApOwogICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlMaXN0LCB7JUNhdGVnb3J5fTsKfQoKIyBjcmVhdGUgd2ViLXNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgRlFETiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkIGNvZGVkIGxvY2FsaG9zdCBJUCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYiBzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yICB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMDAwMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2VMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6TGFuZ3VhZ2VMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRU2VhcmNoJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlTGlzdCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQdWJsaWNGQVFTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdMYW5ndWFnZUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5ID0+IFxAUHVibGljQ2F0ZWdvcnlMaXN0LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgT3JkZXJCeSA9PiAnRkFRSUQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgICAgICAkRkFRSURGb3VyLAogICAgICAgICAgICAgICAgICAgICRGQVFJRFR3bywKICAgICAgICAgICAgICAgICAgICAkRkFRSURPbmUsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBXaGF0ICAgID0+ICdMb29rIGZvciBtZSAnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBPcmRlckJ5ID0+ICdGQVFJRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFGb3VyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUUZvdXIsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEZBUUlERm91ciwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSUQgPT4gJEZBUUlERm91ciwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEIScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1B1YmxpY0ZBUUdldDogR290IG5vIEl0ZW1JRCEnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQoKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEZBUUlERm91ciwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgNycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICdOb3RJdGVtSUQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFHZXQuTm90VmFsaWRGQVFJRCcsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFHZXQ6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICdOb3RJdGVtSUQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA4JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlEVGhyZWUsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUVRocmVlLAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gXEBBdHRhY2htZW50c1RocmVlLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVRocmVlLAogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEZBUUlEVGhyZWUsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ05vdEV4aXN0aW5nRmllbGQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAxMCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgV2hhdCA9PiAnTm90RXhpc3RpbmdWYWx1ZScsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDExJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gIiRGQVFJRE9uZSwkRkFRSURUd28sJEZBUUlEVGhyZWUiLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUU9uZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVR3bywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVRocmVlLAogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gIiRGQVFJRE9uZSwkRkFRSURUd28sJEZBUUlEVGhyZWUiLAogICAgfSwKCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbnRpYXRlIGNvcnJlY3RseScsCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgY3JlYXRlIGxvY2FsIG9iamVjdAogICAgbXkgJExvY2FsT2JqZWN0ID0gIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2ViLXNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRUZXN0LT57UmVxdWVzdERhdGF9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICkgewoKICAgICAgICBpZiAoIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSXRlbSAoIEB7ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgIyByZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQKICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICBpZiAoICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGF9ICkgewogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuTG9jYWxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQoKICAgICMgcmVtb3RlIGNhbGwgdXNpbmcgdGhlIHN5c3RlbSBhcyBSZXF1ZXN0ZXIgYW5kIFByb3ZpZGVyCgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2ViLXNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gJFRlc3QtPntSZXF1ZXN0RGF0YX0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAjIHdvcmthcm91bmQgYmVjYXVzZSByZXN1bHRzIGZyb20gZGlyZWN0IGNhbGwgYW5kCiAgICAjIGZyb20gU09BUCBjYWxsIGFyZSBhIGxpdHRsZSBiaXQgZGlmZmVyZW50CiAgICBpZiAoICRUZXN0LT57T3BlcmF0aW9ufSBlcSAnUHVibGljRkFRR2V0JyAmJiAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSApIHsKCiAgICAgICAgaWYgKCByZWYgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gZXEgJ0hBU0gnICkgewogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfS0+eyRLZXl9ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCByZWYgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgZm9yIG15ICRGQVFJdGVtICggQHsgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciAtIFN1Y2Nlc3Mgc3RhdHVzIiwKICAgICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJldHVyblJlbW90ZURhdGF9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IChuZWVkcyBjb25maWd1cmVkIGFuZCBydW5uaW5nIHdlYnNlcnZlcikiLAogICAgKTsKCn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwIHdlYi1zZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlRGVsZXRlLAogICAgIkRlbGV0ZWQgV2Vicy1lcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7CgojIGNsZWFuIHVwIEZBUSBzdHVmZgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRGQVFJRE9uZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlET25lIiwKKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEZBUUlEVHdvLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURUd28iLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURUaHJlZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBGQVFJRDogJEZBUUlEVGhyZWUiLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkRkFRSURGb3VyLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEZBUUlEOiAkRkFRSURGb3VyIiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlERm91ciIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUaHJlZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURUaHJlZSIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlEVHdvIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURPbmUiLAopOwoKMTsK
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9//////////7///8EAAAABQAAAAYAAAAHAAAACAAAAP7///8KAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAAP7///83AAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAQAAAP7////+////BAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAA/v///yYAAAAnAAAAKAAAACkAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8BAP7/AwoAAP////8GCQIAAAAAAMAAAAAAAABGGAAAAE1pY3Jvc29mdCBXb3JkLURva3VtZW50AAoAAABNU1dvcmREb2MAEAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABMACgABAFsADwACAAAAAAAAAFQAABDx/wIAVAAAAAcARABlAGYAYQB1AGwAdAAAAAgAAAAxJAAqJAErAEIqAE9KAwBRSgMAQ0oYAG1ICQRzSAkEUEoFAG5I/wBeSgYAX0j/AHRI/wAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBQPL/oQBCAAAAGQBBAGIAcwBhAHQAegAtAFMAdABhAG4AZABhAHIAZABzAGMAaAByAGkAZgB0AGEAcgB0AAAAAAAAAAAAAAAAAC4AQhABAPIALgAAAAkAVABlAHgAdAAgAGIAbwBkAHkAAAAKAA8AE6QAABSkeAAAACAALxDxAAIBIAAAAAQATABpAHMAdAAAAAIAEAAEAF5KBwBAAP4fAQASAUAAAAAHAEMAYQBwAHQAaQBvAG4AAAANABEAE6R4ABSkeAAMJAEAEgBDShQANggBXkoHAGFKFABdCAEmAP4fAQAiASYAAAAFAEkAbgBkAGUAeAAAAAUAEgAMJAEABABeSgcAAAAAABQAAAAEAAAKAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyBQAAWAIAAAAAAAAAAAAAwQMAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTAwAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQBAACvAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDZAAAATwBUAFIAUwAuAG8AcgBnAA0ADQBUAEUAUwBUAA0ADQAIAA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEgQAABQEAAAeBAAAIAQAACIEAAAkBAAAJgQAACgEAAD09PT07/T09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQNqAAAAAFUIARZDSkAANQgBYUpAAFwIAU9KBABRSgQACAAEAAASBAAAFAQAAB4EAAAgBAAAJAQAACYEAAAoBAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AQAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACACgAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIAAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAAAAQBPAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgD/////AwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAFAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABKCAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIABQAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAADgBAAAAAAAA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L0ZvbnQgNyAwIFINCiAgIC9YT2JqZWN0IDggMCBSDQogICAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIC9JbWFnZUIgXQ0KPj4NCmVuZG9iag0KDQoxIDAgb2JqDQo8PCAvVHlwZSAvUGFnZQ0KICAgL1BhcmVudCA1IDAgUg0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KICAgL0dyb3VwIDw8IC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0IgL0kgdHJ1ZSA+Pg0KICAgL0NvbnRlbnRzIDIgMCBSDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8IC9UeXBlIC9QYWdlcw0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQ0KICAgL0tpZHMgWyAxIDAgUg0KICAgICAgICAgICBdDQogICAvQ291bnQgMQ0KPj4NCmVuZG9iag0KDQoxMCAwIG9iag0KPDwgL1R5cGUgL0NhdGFsb2cNCiAgIC9QYWdlcyA1IDAgUg0KPj4NCmVuZG9iag0KDQoxMSAwIG9iag0KPDwgL0NyZWF0b3IgPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+DQovUHJvZHVjZXIgPEZFRkYwMDRGMDA3MDAwNjUwMDZFMDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyRTAwNkYwMDcyMDA2NzAwMjAwMDMyMDAyRTAwMzAwMDJEMDA3MDAwNzIwMDY1Pg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDA3MDMwNTE1NTM1OSswMScwMCcpDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMTINCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMzY5OCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzMTAgMDAwMDAgbg0KMDAwMDAwMDMzNiAwMDAwMCBuDQowMDAwMDAzODgzIDAwMDAwIG4NCjAwMDAwMDMzODIgMDAwMDAgbg0KMDAwMDAwMzUwMiAwMDAwMCBuDQowMDAwMDAzNTQzIDAwMDAwIG4NCjAwMDAwMDM1ODQgMDAwMDAgbg0KMDAwMDAwNDAxOSAwMDAwMCBuDQowMDAwMDA0MDc5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9TaXplIDEyDQogICAvUm9vdCAxMCAwIFINCiAgIC9JbmZvIDExIDAgUg0KICAgL0lEIFsgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5Pg0KICAgICAgICAgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5PiBdDQo+Pg0Kc3RhcnR4cmVmDQo0Mjk0DQolJUVPRg0K
VGVzdCBGQVExO01pc2M7ZW47ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MQpUZXN0IEZBUTI7TWlzYztlbjtleHRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkxClRlc3QgRkFRMztNaXNjO2VuO2V4dGVybmFsO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE0O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE1O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE2O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE3O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE4O01pc2M7ZW47aW50ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MgpUZXN0IEZBUTk7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTA7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTE7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTI7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTM7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MwpUZXN0IEZBUTE0O01pc2M7ZGU7cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTMKVGVzdCBGQVExNTtNaXNjO2RlO3B1YmxpYztGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTY7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE3O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE4O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE5O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTIwO01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NAo=
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFBZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUFkZCIpOwoKICAgICAgICAjIGNoZWNrIHBhZ2UKICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoVGl0bGUgS2V5d29yZHMgQ2F0ZWdvcnlJRCBTdGF0ZUlEIFZhbGlkSUQgTGFuZ3VhZ2VJRCBGaWxlVXBsb2FkCiAgICAgICAgICAgIEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNiBGQVFTdWJtaXQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyB0ZXN0IHBhcmFtcwogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwogICAgICAgIG15ICRGQVFDb21tZW50ICA9ICdTZWxlbml1bSBDb21tZW50JzsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRVGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0tleXdvcmRzIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bScpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQ2F0ZWdvcnlJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNTdGF0ZUlEJykudmFsKCcyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1ZhbGlkSUQnKS52YWwoJzEnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjTGFuZ3VhZ2VJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQxIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFTeW1wdG9tKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDIiLCAnY3NzJyApLT5zZW5kX2tleXMoJEZBUVByb2JsZW0pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkMyIsICdjc3MnICktPnNlbmRfa2V5cygkRkFRU29sdXRpb24pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkNiIsICdjc3MnICktPnNlbmRfa2V5cygkRkFRQ29tbWVudCk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgnJCgiI0ZBUVN1Ym1pdCIpLmNsaWNrKCk7Jyk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRkFRQm9keSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyB2ZXJpZnkgdGVzdCBGQVEgaXMgY3JlYXRlZAogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0ICggJEZBUVN5bXB0b20sICRGQVFQcm9ibGVtLCAkRkFRU29sdXRpb24sICRGQVFDb21tZW50ICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdCApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgZ2V0IHRlc3QgY3JlYXRlZCBGQVEgSUQKICAgICAgICBteSAkRkFRSXRlbSA9ICREQk9iamVjdC0+UXVvdGUoJEZBUVRpdGxlKTsKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIFdIRVJFIGZfc3ViamVjdCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRGQVFUaXRsZSBdCiAgICAgICAgKTsKICAgICAgICBteSAkRkFRSUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGQVFJRCA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkRkFRSUQgaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUNhdGVnb3J5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFDYXRlZ29yeSIpOwoKICAgICAgICAjIGNoZWNrIEFnZW50RkFRQ2F0ZWdvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2xpY2sgb24gJ0FkZCBjYXRlZ29yeScKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249QWRkJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhOYW1lIFBhcmVudElEIFBlcm1pc3Npb25Hcm91cHMgVmFsaWRJRCBDb21tZW50KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgY2F0ZWdvcnkKICAgICAgICBteSAkQ2F0ZWdvcnlOYW1lID0gJ0NhdGVnb3J5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI05hbWUiLCAnY3NzJyApLT5zZW5kX2tleXMoJENhdGVnb3J5TmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjUGVybWlzc2lvbkdyb3VwcycpLnZhbChcJCgnI1Blcm1pc3Npb25Hcm91cHMgb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFwkKHRoaXMpLmh0bWwoKSA9PSAnZmFxJzsgfSApLnZhbCgpICkudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1ZhbGlkSUQnKS52YWwoJzEnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0NvbW1lbnQiLCAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIENhdGVnb3J5Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIHZlcmlmeSB0ZXN0IGNhdGVnb3J5IGlzIGNyZWF0ZWQKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDYXRlZ29yeU5hbWUgKSA+IC0xLAogICAgICAgICAgICAiJENhdGVnb3J5TmFtZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgZ2V0IHRlc3QgY3JlYXRlZCBjYXRlZ29yeSBJRAogICAgICAgIG15ICRDYXRlZ29yeSA9ICREQk9iamVjdC0+UXVvdGUoJENhdGVnb3J5TmFtZSk7CiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgV0hFUkUgbmFtZSA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDYXRlZ29yeU5hbWUgXQogICAgICAgICk7CiAgICAgICAgbXkgJENhdGVnb3J5SUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgY2xpY2sgb24gZGVsZXRlIGljb24KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZWxldGVDYXRlZ29yeUlEJENhdGVnb3J5SUQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiI0RpYWxvZ0J1dHRvbjEiKS5sZW5ndGgnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIGRlbGV0ZSBkaWFsb2cgaGFzIGNsb3NlZAogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuICFcJCgnI0RpYWxvZ0J1dHRvbjEnKS5sZW5ndGgiICk7CgogICAgICAgICMgdmVyaWZ5IHRlc3QgY3JlYXRlZCBjYXRlZ29yeSBpcyBkZWxldGVkCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ2F0ZWdvcnlOYW1lICkgPT0gLTEsCiAgICAgICAgICAgICIkQ2F0ZWdvcnlOYW1lIGlzIG5vdCBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgRkFRCiAgICAgICAgbXkgJEZBUVRpdGxlID0gJ0ZBUSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRkFRSUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFJRDtOYXY9Iik7CgogICAgICAgICMgdmVyaWZ5IGl0cyByaWdodCBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gJ0RlbGV0ZScKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFEZWxldGU7SXRlbUlEPSRGQVFJRCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNEaWFsb2dCdXR0b24xIikubGVuZ3RoJyApOwoKICAgICAgICAjIHZlcmlmeSBkZWxldGUgbWVzc2FnZQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nICkgPiAtMSwKICAgICAgICAgICAgIkRlbGV0ZSBtZXNzYWdlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGV4ZWN1dGUgZGVsZXRlCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyB2ZXJpZnkgZGVsZXRlIGFjdGlvbgogICAgICAgICMgdHJ5IHRvIG5hdmlnYXRlIHRvIHRoZSBBZ2V0bkZBUVpvb20gb2YgZGVsZXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEZBUUlEO05hdj0iKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJObyBzdWNoIEl0ZW1JRCAkRkFRSUQhIiApID4gLTEsCiAgICAgICAgICAgICJEZWxldGUgYWN0aW9uIC0gc3VjY2VzcyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIEdldCB0ZXN0IHBhcmFtcy4KICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICVUZXN0ICAgICA9ICgKICAgICAgICAgICAgU3RvcmVkID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdTZWxlbml1bSBLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU2VsZW5pdW0gU3ltcHRvbScsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnU2VsZW5pdW0gUHJvYmxlbScsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU2VsZW5pdW0gU29sdXRpb24nLAogICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJ1NlbGVuaXVtIENvbW1lbnQnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ZWQgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlIC4gJyBFZGl0JywKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMiwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdTZWxlbml1bSBLZXl3b3JkcyBFZGl0JywKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTZWxlbml1bSBTeW1wdG9tIEVkaXQnLAogICAgICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJ1NlbGVuaXVtIFByb2JsZW0gRWRpdCcsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU2VsZW5pdW0gU29sdXRpb24gRWRpdCcsCiAgICAgICAgICAgICAgICBGaWVsZDYgICAgICA9PiAnU2VsZW5pdW0gQ29tbWVudCBFZGl0JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSBASXRlbUlEczsKICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAleyAkVGVzdHtTdG9yZWR9IH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBJdGVtSURzLCAkSXRlbUlEOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIEdldCBzY3JpcHQgYWxpYXMuCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CgogICAgICAgICMgdmVyaWZ5IGl0cyByaWdodCBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKSB8fCBkaWUgIlBvcHVwIHdpbmRvdyBub3QgY3JlYXRlZCAoZmlyc3QgdGltZSkuIjsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIHZlcmlmeSBzdG9yZWQgdmFsdWVzLgogICAgICAgIGZvciBteSAkU3RvcmVkICggc29ydCBrZXlzICV7ICRUZXN0e1N0b3JlZH0gfSApIHsKICAgICAgICAgICAgaWYgKCAkU3RvcmVkIG5lICdDb250ZW50VHlwZScgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjJyAuICRTdG9yZWQsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICIkVGVzdHtTdG9yZWR9LT57JFN0b3JlZH0iLAogICAgICAgICAgICAgICAgICAgICIjJFN0b3JlZCBzdG9yZWQgdmFsdWUiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBlZGl0IHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCcgRWRpdCcpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjU3RhdGVJRCcpLnZhbCgnMicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNMYW5ndWFnZUlEJykudmFsKCcyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNLZXl3b3JkcyIsICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDEiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDIiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDMiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDYiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1ZhbGlkSUQnKS52YWwoJzInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwoKICAgICAgICAjIHN1Ym1pdCBhbmQgc3dpdGNoIGJhY2sgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICkgfHwgZGllICJQb3B1cCB3aW5kb3cgbm90IGNsb3NlZC4iOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIFdhaXQgZm9yIHJlbG9hZCB0byBraWNrIGluLgogICAgICAgIHNsZWVwIDE7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUUJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgQ2xpY2sgb24gJ0VkaXQnIGFuZCBzd2l0Y2ggd2luZG93LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudEZBUUVkaXQ7SXRlbUlEPSRJdGVtSUQnICldIiktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApIHx8IGRpZSAiUG9wdXAgd2luZG93IG5vdCBjcmVhdGVkIChzZWNvbmQgdGltZSkuIjsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIHZlcmlmeSBlZGl0ZWQgdmFsdWVzLgogICAgICAgIGZvciBteSAkRWRpdGVkICggc29ydCBrZXlzICV7ICRUZXN0e0VkaXRlZH0gfSApIHsKICAgICAgICAgICAgaWYgKCAkRWRpdGVkIG5lICdDb250ZW50VHlwZScgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjJyAuICRFZGl0ZWQsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICIkVGVzdHtFZGl0ZWR9LT57JEVkaXRlZH0iLAogICAgICAgICAgICAgICAgICAgICIjJEVkaXRlZCBzdG9yZWQgdmFsdWUiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbG9zZSAnRWRpdCcgcG9wLXVwIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmNsb3NlKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApIHx8IGRpZSAiUG9wdXAgd2luZG93IG5vdCBjbG9zZWQuIjsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBFbmFibGUgUmljaFRleHQuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFBZGQiKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGpRdWVyeSBpcyBsb2FkZWQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJzsiICk7CgogICAgICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICAgICBteSAkRW5jb2RlT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyk7CiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICAgICAgIyBDcmVhdGUgRkFRIGl0ZW0gd2l0aCBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICBteSAkTG9jYXRpb24gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKQogICAgICAgICAgICAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9XZWJVcGxvYWRDYWNoZS9XZWJVcGxvYWRDYWNoZS1UZXN0MS5wbmciOwogICAgICAgIG15ICRDb250ZW50UmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkTG9jYXRpb24sCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdiaW5tb2RlJywKICAgICAgICApOwogICAgICAgIG15ICRDb250ZW50ID0gJHskQ29udGVudFJlZn07CiAgICAgICAgJEVuY29kZU9iamVjdC0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgbXkgJEZvcm1JRCAgICAgID0gJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCdpbnB1dFtuYW1lPUZvcm1JRF0nKS52YWwoKTsiKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAnSW5saW5lJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbnRlbnRJRCAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRGlzcG9zaXRpb24gPSAnaW5saW5lJzsKCiAgICAgICAgIyBBZGQgcGljdHVyZSB0byB1cGxvYWQgY2FjaGUuCiAgICAgICAgbXkgJEFkZCA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnRJRCAgID0+ICRDb250ZW50SUQsCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICREaXNwb3NpdGlvbiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQWRkLAogICAgICAgICAgICAiSW5saW5lIHBpY3R1cmUgaXMgYWRkZWQgdG8gdXBsb2FkIGNhY2hlIHN1Y2Nlc3NmdWxseSIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZpZWxkMUhUTUwgPQogICAgICAgICAgICAnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+JyAuCiAgICAgICAgICAgICc8aW1nIGFsdD0iIiBzcmM9Ii8nIC4gJFNjcmlwdEFsaWFzIC4gJ2luZGV4LnBsP0FjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0nIC4gJEZvcm1JRCAuCiAgICAgICAgICAgICc7Q29udGVudElEPScgLiAkQ29udGVudElEIC4gJyIgLz48L2JvZHk+PC9odG1sPic7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdUZXN0IFRpdGxlJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNDYXRlZ29yeUlEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1N0YXRlSUQnKS52YWwoJzInKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjTGFuZ3VhZ2VJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CgogICAgICAgICMgV2FpdCB1bnRpbCBDS0VESVRPUiBpcyBsb2FkZWQgKHRoZXJlIGFyZSA0IGVkaXRvcnMgaW4gdGhlIHNjcmVlbikuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2JvZHkuY2tlX2VkaXRhYmxlJywgXCQoJy5ja2Vfd3lzaXd5Z19mcmFtZScpLmNvbnRlbnRzKCkpLmxlbmd0aCA9PT0gNDsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiQ0tFRElUT1IuaW5zdGFuY2VzLkZpZWxkMS5zZXREYXRhKCckRmllbGQxSFRNTCcpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiBDS0VESVRPUi5pbnN0YW5jZXMuRmllbGQxLmdldERhdGEoKS5pbmRleE9mKCdGb3JtSUQ9JEZvcm1JRDtDb250ZW50SUQ9JENvbnRlbnRJRCcpID4gLTE7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjVmFsaWRJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CgogICAgICAgICMgU3VibWl0IGFuZCBzd2l0Y2ggYmFjayB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD1cIl0nKS5sZW5ndGg7IgogICAgICAgICk7CgogICAgICAgICMgR2V0IEl0ZW1JRC4KICAgICAgICBteSBARkFRID0gc3BsaXQoICdJdGVtSUQ9JywgJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKSApOwogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRGQVFbMV07CgogICAgICAgICMgR2V0IGF0dGFjaG1lbnRzIGJlZm9yZSBFZGl0IHNjcmVlbi4KICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlEc1sxXSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQEV4aXN0aW5nQXR0YWNobWVudHMsCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICJCZWZvcmUgRWRpdCBzY3JlZW4gLSB0aGVyZSBpcyBvbmUgSW5saW5lIGF0dGFjaG1lbnQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50c1swXS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICAiQmVmb3JlIEVkaXQgc2NyZWVuIC0gSW5saW5lIGF0dGFjaG1lbnQgJEZpbGVuYW1lLnBuZyBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiAnRWRpdCcgYW5kIHN3aXRjaCB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9JEl0ZW1JRHNbMV0nICldIiktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApIHx8IGRpZSAiUG9wdXAgd2luZG93IG5vdCBjcmVhdGVkLiI7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFTdWJtaXQiKS5sZW5ndGg7JyApOwogICAgICAgIHNsZWVwIDE7CgogICAgICAgICMgU3VibWl0IGFuZCBzd2l0Y2ggYmFjayBtYWluIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCckKCIjRkFRU3VibWl0IikuY2xpY2soKTsnKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKSB8fCBkaWUgIlBvcHVwIHdpbmRvdyBub3QgY2xvc2VkLiI7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdGluZyBqdXN0IHRvIGJlIHN1cmUgYXR0YWNobWVudCBpcyBzdG9yZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBHZXQgYXR0YWNobWVudHMgYWZ0ZXIgRWRpdCBzY3JlZW4uCiAgICAgICAgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRHNbMV0sCiAgICAgICAgICAgIFNob3dJbmxpbmUgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgc2NhbGFyIEBFeGlzdGluZ0F0dGFjaG1lbnRzLAogICAgICAgICAgICAxLAogICAgICAgICAgICAiQWZ0ZXIgRWRpdCBzY3JlZW4gLSB0aGVyZSBpcyBvbmUgSW5saW5lIGF0dGFjaG1lbnQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50c1swXS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICAiQWZ0ZXIgRWRpdCBzY3JlZW4gLSBJbmxpbmUgYXR0YWNobWVudCAkRmlsZW5hbWUucG5nIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRcy4KICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEl0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZGlzYWJsZSBzaG93IGludmFsaWQgRkFRIGl0ZW1zIFN5U0NvbmZpZwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0ludmFsaWRGQVFJdGVtcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15IEBGQVFzOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBmb3IgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgRkFRSUQgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBARkFRcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBvbmUgRkFRIGFzIGludmFsaWQgc2VlIGJ1ZyBidWcjMTE0OTggKGh0dHA6Ly9idWdzLm90cnMub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ5OClTaG93SW52YWxpZEZBUUl0ZW1zCiAgICAgICAgbXkgJEludmFsaWRGQVFUaXRsZSA9ICJJbnZhbGlkICRGQVFzWzBdLT57RkFRVGl0bGV9IjsKICAgICAgICBteSAkU3VjY2VzcyAgICAgICAgID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgICAgICAgICBJdGVtSUQgICAgICA9PiAkRkFRc1swXS0+e0ZBUUlEfSwKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEludmFsaWRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDIsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkRkFRc1swXS0+e0ZBUVRpdGxlfSA9ICRJbnZhbGlkRkFRVGl0bGU7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlciIpOwoKICAgICAgICAjIGNoZWNrIEFnZW50RkFRRXhwbG9yZXIgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgdGVzdCBkYXRhIGZvciBleHBsb3JlciBzY3JlZW4KICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0ZBUSBFeHBsb3JlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntTY3JlZW5EYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntTY3JlZW5EYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNsaWNrIG9uICdNaXNjJywgZ28gb24gc3ViY2F0ZWdvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdNaXNjJywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIG9yZGVyIEZBUSBpdGVtIHBlciBGQVFJRCBieSBEb3duCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPTE7U29ydEJ5PUZBUUlEO09yZGVyQnk9RG93biIpOwoKICAgICAgICAjIHZlcmlmeSBJbnZhbGlkIEZBUSBpcyBub3QgdmlzaWJsZSBvbiBleHBsb3JlciBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFzWzBdLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICIkRkFRc1swXS0+e0ZBUVRpdGxlfSBpcyBub3QgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZW5hYmxlIHNob3cgaW52YWxpZCBGQVEgaXRlbXMgU3lTQ29uZmlnCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93SW52YWxpZEZBUUl0ZW1zJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJlZnJlc2ggc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnLk1hc3RlckFjdGlvbi5JbnZhbGlkIHRkIGRpdjplcSgwKScpLnRleHQoKS50cmltKCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYW5kIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRcwogICAgICAgIGZvciBteSAkRkFRIChARkFRcykgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0ciNJdGVtSURfIiAuICRGQVEtPntGQVFJRH0gLiAiXy5NYXN0ZXJBY3Rpb24gdGQgZGl2IiwgJ2NzcycgKS0+Z2V0X3RleHQoKSwKICAgICAgICAgICAgICAgICRGQVEtPntGQVFUaXRsZX0sCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57RkFRSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSBJRCAkRkFRLT57RkFRSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRlc3QgdXNlciBJRAogICAgICAgIG15ICRUZXN0VXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFJRDtOYXY9Iik7CgogICAgICAgICMgdmVyaWZ5IGl0cyByaWdodCBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gJ0hpc3RvcnknIGFuZCBzd2l0Y2ggd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRSGlzdG9yeTtJdGVtSUQ9JEZBUUlEJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuV2lkZ2V0U2ltcGxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIHZlcmlmeSBoaXN0b3J5IG1lc3NhZ2UKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkVGVzdFVzZXJMb2dpbiAoJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4pIiApID4gLTEsCiAgICAgICAgICAgICJIaXN0b3J5IGVudHJ5IGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGNsb3NlICdIaXN0b3J5JyBwb3AtdXAgd2luZG93CiAgICAgICAgJFNlbGVuaXVtLT5jbG9zZSgpOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUpvdXJuYWwgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFKb3VybmFsIik7CgogICAgICAgICMgY2hlY2sgQWdlbnRGQVFKb3VybmFsIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2RpdltcQHRpdGxlPSckRkFRVGl0bGUnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHdlIGFyZSBpbiBBZ2VudEZBUVpvb20gc2NyZWVuCiAgICAgICAgbXkgJFVSTEFjdGlvbiA9ICRTZWxlbml1bS0+Z2V0X2N1cnJlbnRfdXJsKCk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBpbmRleCggJFVSTEFjdGlvbiwgIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFJRCIgKSA+IC0xLAogICAgICAgICAgICAxLAogICAgICAgICAgICAiTGluayBmcm9tIEpvdXJuYWwgdG8gWm9vbSB2aWV3IC0gc3VjY2VzcyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2ZhcScsICdmYXFfYWRtaW4nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFMYW5ndWFnZSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiKTsKCiAgICAgICAgIyBjaGVjayBhZGQgYnV0dG9uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUFkZCcgKV0iKTsKCiAgICAgICAgIyBjaGVjayBBZ2VudEZBUUxhbmd1YWdlIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIGNoZWNrIEVuZ2xpc2ggbGFuZ3VhZ2UgLSAnZW4nCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdlbicsICdsaW5rX3RleHQnICk7CgogICAgICAgICMgY2hlY2sgR2VybWFuIExhbmd1YWdlIC0gJ2RlJwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnZGUnLCAnbGlua190ZXh0JyApOwoKICAgICAgICAjIGFkZCB0ZXN0IGxhbmd1YWdlIC0gU3BhbmlzaCAoZXMpCiAgICAgICAgbXkgJEZBUUxhbmd1YWdlID0gJ2VzJzsKCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyAnZXMgLSBMYW5ndWFnZScgaGFzIGJlZW4gYWRkZWQgYmVmb3JlCiAgICAgICAgbXkgJEV4aXN0cyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgIE5hbWUgICA9PiAkRkFRTGFuZ3VhZ2UsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1BZGQnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkRkFRTGFuZ3VhZ2UpOwoKICAgICAgICAgICAgIyBjbG9zZSBFcnJvciBkaWFsb2cgYmxvY2sKICAgICAgICAgICAgbXkgJENoZWNrQ29uZmlybUpTID0gPDwiSkFWQVNDUklQVCI7CihmdW5jdGlvbiAoKSB7CiAgICB2YXIgbGFzdENvbmZpcm0gPSB1bmRlZmluZWQ7CiAgICB3aW5kb3cuY29uZmlybSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Owp9KCkpOwpKQVZBU0NSSVBUCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoJENoZWNrQ29uZmlybUpTKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjTmFtZScpLmhhc0NsYXNzKCdTZXJ2ZXJFcnJvcicpIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICcxJywKICAgICAgICAgICAgICAgICdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdvIGJhY2sgb24gTGFuZ3VhZ2Ugb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiKTsKCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFMYW5ndWFnZSk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICB9CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EYXRhVGFibGUiKS5sZW5ndGgnICk7CgogICAgICAgICMgZ2V0IElEIGZvciB0ZXN0IGxhbmd1YWdlCiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkRkFRTGFuZ3VhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgIyB2ZXJpZnkgdGVzdCBGQVEgaGFzIGJlZW4gY3JlYXRlZAogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMYW5ndWFnZUlEIiApID4gLTEsCiAgICAgICAgICAgICJUZXN0IGxhbmd1YWdlIGlzIGNyZWF0ZWQgLSAkRkFRTGFuZ3VhZ2UiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYWRkZWQgJ3Rlc3QnIGxhbmd1YWdlCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIkRkFRTGFuZ3VhZ2UiLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjTmFtZScsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAkRkFRTGFuZ3VhZ2UsCiAgICAgICAgICAgICJTdG9yZWQgbGFuZ3VhZ2UgbmFtZSAkRkFRTGFuZ3VhZ2UgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnbyBiYWNrIG9uIExhbmd1YWdlIG92ZXJ2aWV3IHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnQ2FuY2VsJywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGlmIGNhc2UgdGVzdCBsYW5ndWFnZSB3YXMgY3JlYXRlZCBpbiB0aGUgdGVzdCwgZGVsZXRlIGl0CiAgICAgICAgaWYgKCAhJEV4aXN0cyApIHsKCiAgICAgICAgICAgICMgZGVsZXRlICd0ZXN0JyBsYW5ndWFnZQogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZWxldGVMYW5ndWFnZUlEJExhbmd1YWdlSUQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIjRGlhbG9nQnV0dG9uMSIpLmxlbmd0aCcgKTsKCiAgICAgICAgICAgICMgdmVyaWZ5IGRlbGV0ZSBtZXNzYWdlCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/JyApID4gLTEsCiAgICAgICAgICAgICAgICAiRGVsZXRlIG1lc3NhZ2UgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGV4ZWN1dGUgZGVsZXRlCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0RpYWxvZ0J1dHRvbjEiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIHZlcmlmeSB0ZXN0IEZBUSBoYXMgYmVlbiBkZWxldGVkCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJBZ2VudEZBUUxhbmd1YWdlO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD0kTGFuZ3VhZ2VJRCIgKSA9PSAtMSwKICAgICAgICAgICAgICAgICJUZXN0IGxhbmd1YWdlIGlzIGRlbGV0ZWQgLSAkRkFRTGFuZ3VhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIFNldCBsaW5rIG9iamVjdCB2aWV3IG1vZGUgdG8gc2ltcGxlLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdMaW5rT2JqZWN0OjpWaWV3TW9kZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdTaW1wbGUnLAogICAgICAgICk7CgogICAgICAgICMgU2V0IEZBUTo6VGl0bGVTaXplLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OlRpdGxlU2l6ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICc1MCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHRlc3QgdXNlciBJRC4KICAgICAgICBteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUSBpdGVtcy4KICAgICAgICBteSBARkFRSURzOwogICAgICAgIG15IEBGQVFOdW1iZXJzOwogICAgICAgIGZvciBteSAkRkFRICggMSAuLiAyICkgewogICAgICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgICAgICAgICAgRmllbGQ0ICAgICAgPT4gJ0ZpZWxkNC4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDUgICAgICA9PiAnRmllbGQ1Li4uJywKICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgID0+ICdDb21tZW50Li4uJywKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQEZBUUlEcywgJEl0ZW1JRDsKCiAgICAgICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZBUU51bWJlciA9ICRGQVF7TnVtYmVyfTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJDcmVhdGVkIFRpY2tldCBJRCAkSXRlbUlEIC0gRkFRIE51bWJlciAkRkFRTnVtYmVyIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUU51bWJlcnMsICRGQVFOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gem9vbSB2aWV3IG9mIGNyZWF0ZWQgdGVzdCBGQVEgaXRlbS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFJRHNbMF0iKTsKCiAgICAgICAgIyBDbGljayBvbiAnTGluaycuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFROycgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB0byBsaW5rIG9iamVjdCB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJib2R5IikubGVuZ3RoJyApOwoKICAgICAgICAjIFNlYXJjaCBmb3Igc2Vjb25kIGNyZWF0ZWQgdGVzdCBmYXEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi4vLypbXEBpZD0nU0VBUkNIOjpOdW1iZXInXSIpLT5zZW5kX2tleXMoICRGQVFOdW1iZXJzWzFdICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VibWl0U2VhcmNoJywgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIExpbmsgY3JlYXRlZCB0ZXN0IEZBUSBpdGVtcy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSckRkFRSURzWzFdJ11bXEB0eXBlPSdjaGVja2JveCddIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUeXBlSWRlbnRpZmllcicpLnZhbCgnUGFyZW50Q2hpbGQ6OlRhcmdldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdHlwZT0nc3VibWl0J11bXEBuYW1lPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDbG9zZSBsaW5rIG9iamVjdCB3aW5kb3cgYW5kIHN3aXRjaCBiYWNrIHRvIGFnZW50IEZBUSB6b29tLgogICAgICAgICRTZWxlbml1bS0+Y2xvc2UoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBSZWZyZXNoIGFnZW50IEZBUSB6b29tLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgVmVyaWZ5IHRoYXQgcGFyZW50IHRlc3QgRkFRIGlzIGxpbmtlZCB3aXRoIGNoaWxkIHRlc3QgRkFRLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0NoaWxkJyApID4gLTEsCiAgICAgICAgICAgICJDaGlsZCAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkY6IiAuICRGQVFOdW1iZXJzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlRpY2tldE51bWJlciAkRkFRTnVtYmVyc1sxXSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uIGNoaWxkIEZBUS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kRkFRSURzWzFdJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgVmVyaWZ5IHRoYXQgY2hpbGQgdGVzdCBGQVEgaXMgbGlua2VkIHdpdGggcGFyZW50IHRlc3QgRkFRLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ1BhcmVudCcgKSA+IC0xLAogICAgICAgICAgICAiUGFyZW50IC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiRjoiIC4gJEZBUU51bWJlcnNbMF0gKSA+IC0xLAogICAgICAgICAgICAiRkFRTnVtYmVyICRGQVFOdW1iZXJzWzBdIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdCBGQVEgdGl0bGUgbGVuZ3RoIGluIGNvbXBsZXggdmlldyBmb3IgbGlua2VkIEZBUXMuCiAgICAgICAgIyBTZXQgbGluayBvYmplY3QgdmlldyBtb2RlIHRvIGNvbXBsZXguCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbXBsZXgnLAogICAgICAgICk7CgogICAgICAgICMgVXBkYXRlIHRlc3QgRkFRIHRpdGxlIHRvIG1vcmUgdGhlbiA1MCBjaGFyYWN0ZXJzICh0aGVyZSBpcyA2NSkuCiAgICAgICAgbXkgJExvbmdGQVFUaXRsZSA9ICdUaGlzIGlzIGxvbmcgdGVzdCBteWl0ZW0gdGl0bGUgd2l0aCBtb3JlIHRoZW4gNTAgY2hhcmFjdGVycyBpbiBpdCc7CgogICAgICAgICMgRkFROjpUaXRsZVNpemUgaXMgc2V0IHRvIDUwIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGVzdC4KICAgICAgICBteSAkU2hvcnRUaXRsZSA9IHN1YnN0ciggJExvbmdGQVFUaXRsZSwgMCwgNDcgKSAuICIuLi4iOwoKICAgICAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRGQVFJRHNbMV0sCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFRpdGxlICA9PiAkTG9uZ0ZBUVRpdGxlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlVwZGF0ZWQgRkFRIHRpdGxlIC0gJEZBUUlEc1sxXSIKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kRkFRSURzWzBdIik7CgogICAgICAgICMgQ2hlY2sgZm9yIHVwZGF0ZWQgRkFRIHRpdGxlIGluIGxpbmtlZCBGQVEgaXRlbXMgY29tcGxleCB2aWV3IHRhYmxlLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJExvbmdGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkTG9uZ0ZBUVRpdGxlIC0gZm91bmQgaW4gQWdlbnRGQVFab29tIGNvbXBsZXggdmlldyBtb2RlIiwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IHJlbW92ZSBsaW1pdGF0aW9uIHRvIGZpcmVmb3guCiAgICAgICAgaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IGVxICdjaHJvbWUnICkgewoKICAgICAgICAgICAgIyBDb2xsYXBzZSBhbGwgRkFRIGZpZWxkcyB0byBzaG93IGxpbmsgdGFibGUgaW4gdGhlIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0ZBUUJvZHkgLkV4cGFuZGVkIGEnKS5jbGljaygpOyIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yICJkZWZhdWx0IiB2aXNpYmxlIGNvbHVtbnMgaW4gdGhlIExpbmtlZCBGQVEgd2lkZ2V0LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIEZBUSMgJywKICAgICAgICAgICAgJ0RlZmF1bHQgMXN0IGNvbHVtbiBuYW1lJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMiknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIFRpdGxlICcsCiAgICAgICAgICAgICdEZWZhdWx0IDJuZCBjb2x1bW4gbmFtZScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjV2lkZ2V0RkFRIC5EYXRhVGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDMpJykudGV4dCgpOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJyBTdGF0ZSAnLAogICAgICAgICAgICAnRGVmYXVsdCAzdGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOm50aC1jaGlsZCg0KScpLnRleHQoKTsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICcgQ3JlYXRlZCAnLAogICAgICAgICAgICAnRGVmYXVsdCA0dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoNSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIExpbmtlZCBhcyAnLAogICAgICAgICAgICAnRGVmYXVsdCA1dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICMgU2hvdyBBY3Rpb25NZW51IC0gdXN1YWxseSB0aGlzIGlzIGRvbmUgd2hlbiB1c2VyIGhvdmVycywgaG93ZXZlciBpdCdzIG5vdCBwb3NzaWJsZSB0byBzaW11bGF0ZSB0aGlzIGJlaGF2aW9yLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1dpZGdldEZBUSAuQWN0aW9uTWVudScpLnNob3coKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBjb2x1bW4gc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgTGlua2VkIEZBUSB3aWRnZXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdhI2xpbmtvYmplY3QtRkFRLXRvZ2dsZScsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBXYWl0IGZvciB0aGUgY29tcGxldGUgd2lkZ2V0IHRvIGJlIGZ1bGx5IHNsaWRlZCBpbiBhbGwgdGhlIHdheSBkb3duIHRvIHRoZSBzdWJtaXQgYnV0dG9uLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI2xpbmtvYmplY3QtRkFRX3N1Ym1pdDp2aXNpYmxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFRPRE86IHJlbW92ZSBsaW1pdGF0aW9uIHRvIGZpcmVmb3guCiAgICAgICAgaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IGVxICdmaXJlZm94JyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgIlRPRE86IERyYWdBbmREcm9wIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBpbiBGaXJlZm94IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIFJlbW92ZSBBcHByb3ZlZCBmcm9tIGxlZnQgc2lkZSwgYW5kIHB1dCBpdCB0byB0aGUgcmlnaHQgc2lkZS4KICAgICAgICAgICAgJFNlbGVuaXVtLT5EcmFnQW5kRHJvcCgKICAgICAgICAgICAgICAgIEVsZW1lbnQgICAgICA9PiAnI1dpZGdldEZBUSAjQXZhaWxhYmxlRmllbGQtbGlua29iamVjdC1GQVEgbGlbZGF0YS1maWVsZG5hbWU9IkFwcHJvdmVkIl0nLAogICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgID0+ICcjQXNzaWduZWRGaWVsZHMtbGlua29iamVjdC1GQVEnLAogICAgICAgICAgICAgICAgVGFyZ2V0T2Zmc2V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBYID0+IDE4NSwKICAgICAgICAgICAgICAgICAgICBZID0+IDEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIFN0YXRlIGZyb20gcmlnaHQgc2lkZSwgYW5kIHB1dCBpdCB0byB0aGUgbGVmdCBzaWRlLgogICAgICAgICAgICAkU2VsZW5pdW0tPkRyYWdBbmREcm9wKAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgID0+ICcjV2lkZ2V0RkFRICNBc3NpZ25lZEZpZWxkcy1saW5rb2JqZWN0LUZBUSBsaVtkYXRhLWZpZWxkbmFtZT0iU3RhdGUiXScsCiAgICAgICAgICAgICAgICBUYXJnZXQgICAgICAgPT4gJyNBdmFpbGFibGVGaWVsZC1saW5rb2JqZWN0LUZBUScsCiAgICAgICAgICAgICAgICBUYXJnZXRPZmZzZXQgPT4gewogICAgICAgICAgICAgICAgICAgIFggPT4gMTg1LAogICAgICAgICAgICAgICAgICAgIFkgPT4gMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTYXZlIG5ldyBjb2x1bW5zLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNsaW5rb2JqZWN0LUZBUV9zdWJtaXQnLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIFdhaXQgZm9yIEFKQVguCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjV2lkZ2V0RkFRIC5EYXRhVGFibGU6dmlzaWJsZSIpLmxlbmd0aDsnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciAidXBkYXRlZCIgdmlzaWJsZSBjb2x1bW5zIGluIHRoZSBMaW5rZWQgRkFRIHdpZGdldC4KICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjV2lkZ2V0RkFRIC5EYXRhVGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDEpJykudGV4dCgpOyIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAnIEZBUSMgJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDFzdCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOm50aC1jaGlsZCgyKScpLnRleHQoKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJyBBcHByb3ZlZCAnLAogICAgICAgICAgICAgICAgJ1VwZGF0ZWQgMm5kIGNvbHVtbiBuYW1lJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjV2lkZ2V0RkFRIC5EYXRhVGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDMpJykudGV4dCgpOyIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAnIFRpdGxlICcsCiAgICAgICAgICAgICAgICAnVXBkYXRlZCAzdGggY29sdW1uIG5hbWUnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoNCknKS50ZXh0KCk7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICcgQ3JlYXRlZCAnLAogICAgICAgICAgICAgICAgJ1VwZGF0ZWQgNXRoIGNvbHVtbiBuYW1lJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOm50aC1jaGlsZCg1KScpLnRleHQoKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJyBMaW5rZWQgYXMgJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDZ0aCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIG9uICdMaW5rJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1GQVE7JyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvIGxpbmsgb2JqZWN0IHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgQ2xpY2sgb24gJ2dvIHRvIGxpbmsgZGVsZXRlIHNjcmVlbicuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnU3ViYWN0aW9uPUxpbmtEZWxldGU7JyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGxvbmcgRkFRIHRpdGxlIGluIExpbmtEZWxldGUgc2NyZWVuLgoKICAgICAgICAjIFRoaXMgb25lIGlzIGRpc3BsYXllZCBvbiBob3Zlci4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJ0aXRsZT1cIiRMb25nRkFRVGl0bGVcIiIgKSA+IC0xLAogICAgICAgICAgICAiXCJ0aXRsZT0kTG9uZ0ZBUVRpdGxlXCIgLSBmb3VuZCBpbiBMaW5rRGVsZXRlIHNjcmVlbiAtIHdoaWNoIGlzIGRpc3BsYXllZCBvbiBob3ZlciIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3Igc2hvcnQgdGlja2V0IHRpdGxlIGluIExpbmtEZWxldGUgc2NyZWVuLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFNob3J0VGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJFNob3J0VGl0bGUgLSBmb3VuZCBpbiBMaW5rRGVsZXRlIHNjcmVlbiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgYWxsIGxpbmtzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlbGVjdEFsbExpbmtzMCIsICJjc3MiICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgaXQncyBzZWxlY3RlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlbGVjdEFsbExpbmtzMDpjaGVja2VkIikubGVuZ3RoJyApOwoKICAgICAgICAjIENsaWNrIG9uIGRlbGV0ZSBsaW5rcy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5QcmltYXJ5IiwgImNzcyIgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNMaW5rQWRkQ2xvc2VMaW5rIikubGVuZ3RoJyApOwoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCckKCIjTGlua0FkZENsb3NlTGluayIpLmNsaWNrKCk7Jyk7CgogICAgICAgIGlmICggc2NhbGFyKCBAeyAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpIH0gKSA9PSAyICkgewogICAgICAgICAgICAkU2VsZW5pdW0tPmNsb3NlKCk7CiAgICAgICAgfQoKICAgICAgICAjIFdhaXQgdGlsbCBwb3B1cCBpcyBjbG9zZWQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CgogICAgICAgICMgU3dpdGNoIHRvIDFzdCB3aW5kb3cuCiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cwogICAgICAgIGZvciBteSAkSXRlbUlEIChARkFRSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJEZWxldGUgRkFRIEl0ZW0gLSAkSXRlbUlEIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCmlmICggJFNlbGVuaXVtLT57YnJvd3Nlcl9uYW1lfSBuZSAnZmlyZWZveCcgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAxLAogICAgICAgICdQREYgdGVzdCBjdXJyZW50bHkgc3VwcG9ydHMgRmlyZWZveCBvbmx5JwogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKICAgICAgICBteSAkRkFRQ29tbWVudCAgPSAnU2VsZW5pdW0gQ29tbWVudCc7CgogICAgICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBGaWVsZDYgICAgICA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRUHJpbnQ7SXRlbUlEPSRGQVFJRCIpOwoKICAgICAgICAjIHdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZAogICAgICAgIEFDVElWRVNMRUVQOgogICAgICAgIGZvciBteSAkU2Vjb25kICggMSAuLiAyMCApIHsKICAgICAgICAgICAgaWYgKCBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUUNvbW1lbnQgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgIGxhc3QgQUNUSVZFU0xFRVA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICB9CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUUNvbW1lbnQsCiAgICAgICAgICAgIH0sCgogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntGQVFEYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntGQVFEYXRhfSBpcyBmb3VuZCBvbiBwcmludCBzY3JlZW4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwoKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgaXMgY3JlYXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIEFkZCB0ZXN0IGdyb3VwLgogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwogICAgICAgIG15ICRHcm91cElEICAgICA9ICRHcm91cE9iamVjdC0+R3JvdXBBZGQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ2dyb3VwJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCksCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ0NvbW1lbnQgZGVzY3JpYmluZyB0aGUgZ3JvdXAnLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBHcm91cElEcyAgID0+IFskR3JvdXBJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSBARkFRU2VhcmNoOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBmb3IgbXkgJFRpdGxlIChxdyggRkFRU2VhcmNoIEZBUUNoYW5nZVNlYXJjaCApKSB7CiAgICAgICAgICAgIGZvciAoIDEgLi4gNSApIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0ZXN0IEZBUQogICAgICAgICAgICAgICAgbXkgJEZBUVRpdGxlID0gJFRpdGxlIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAgICAgICAgICJGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEZBUUlEIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICgKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBARkFRU2VhcmNoLCBcJUZBUTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVNlYXJjaCBmb3JtLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRU2VhcmNoIik7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgQ2hlY2sgdGlja2V0IHNlYXJjaCBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhTZWFyY2hQcm9maWxlIFNlYXJjaFByb2ZpbGVOZXcgQXR0cmlidXRlIFJlc3VsdEZvcm0gU2VhcmNoRm9ybVN1Ym1pdCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCBzZWFyY2ggZmlsdGVyIGJ5IHRpdGxlIGFuZCBydW4gaXQuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ1RpdGxlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5BZGRCdXR0b24iLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJUaXRsZSIsICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRKicpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnQ2F0ZWdvcnlJRHMnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkFkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDYXRlZ29yeUlEcycpLnZhbCgnJENhdGVnb3J5SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJy4KICAgICAgICAjIFRoZXJlIGFyZSBubyB0ZXN0IEZBUXMsIHVzZXIgZG9lc24ndCBoYXZlIHBlcm1pc3Npb24gZm9yIHRlc3QgY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgbm8gdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBub3QgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgU2lsZW50ICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdXNlciBwZXJtaXNzaW9uIGZvciB0ZXN0IGdyb3VwLgogICAgICAgIG15ICRTdWNjZXNzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uR3JvdXBVc2VyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRHcm91cElELAogICAgICAgICAgICBVSUQgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBtb3ZlX2ludG8gPT4gMCwKICAgICAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAwLAogICAgICAgICAgICAgICAgb3duZXIgICAgID0+IDAsCiAgICAgICAgICAgICAgICBwcmlvcml0eSAgPT4gMCwKICAgICAgICAgICAgICAgIHJ3ICAgICAgICA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJQZXJtaXNzaW9uR3JvdXBVc2VyQWRkKCkgaXMgZG9uZS4iLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgQWdlbnRGQVFTZWFyY2ggcmVzdWx0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVFDaGFuZ2VTZWFyY2gqJy4KICAgICAgICAjIERlbGV0ZSB0ZXN0IEZBUXMgYWZ0ZXIgY2hlY2tpbmcuCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgIGlmICggJEZBUS0+e1R5cGV9IGVxICdGQVFDaGFuZ2VTZWFyY2gnICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVFDaGFuZ2VTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgbm8gdGVzdCBGQVFTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntGQVFJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtIElEICRGQVEtPntGQVFJRH0iLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgYnV0dG9uIGFnYWluLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgbm8gZGF0YSBtZXNzYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZVNtYWxsIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBGQVEgZGF0YSBmb3VuZC4nICkgPiAtMSwKICAgICAgICAgICAgIk5vIEZBUSBkYXRhIGZvdW5kLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjYXRlZ29yeS4KICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwogICAgICAgIG15ICRGQVFDb21tZW50ICA9ICdTZWxlbml1bSBDb21tZW50JzsKCiAgICAgICAgbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICBGaWVsZDMgICAgICA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIEZpZWxkNiAgICAgID0+ICRGQVFDb21tZW50LAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kRkFRSUQiKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhNZW51MDAwLUJhY2sgTWVudTAxMC1FZGl0IE1lbnUwMjAtSGlzdG9yeSBNZW51MDMwLVByaW50IE1lbnUwNDAtTGluayBNZW51MDUwLURlbGV0ZSBGQVFCb2R5IEZBUVZvdGluZykKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgICAgIG15IEBGQVFXaWRnZXRzID0gKCdGQVEgSW5mb3JtYXRpb24nKTsKCiAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgZm9yIHRoZSBzaW1wbGUgdmlldyBtb2RlIGhlcmUuCiAgICAgICAgaWYgKCAkTGlua1RhYmxlVmlld01vZGUgZXEgJ1NpbXBsZScgKSB7CiAgICAgICAgICAgIHB1c2ggQEZBUVdpZGdldHMsICdMaW5rZWQgT2JqZWN0cyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNvdXJjZSAoQEZBUVdpZGdldHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFNvdXJjZSApID4gLTEsCiAgICAgICAgICAgICAgICAiRkFRIGRhdGEgaXMgZm91bmQgb24gc2NyZWVuLSAkU291cmNlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgVmVyaWZ5IHRlc3QgRkFRIGlzIGNyZWF0ZWQuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMScsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDInLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQzJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDYnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAgICAgICAgICMgU3dpdGNoIHRvIEZBUSBzeW1wdG9tIGlmcmFtZSBhbmQgdmVyaWZ5IGl0cyB2YWx1ZXMuCiAgICAgICAgICAgICRTZWxlbml1bS0+U3dpdGNoVG9GcmFtZSgKICAgICAgICAgICAgICAgIEZyYW1lU2VsZWN0b3IgPT4gIiMkVGVzdC0+e0lmcmFtZX0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBXYWl0IHRvIHN3aXRjaCBvbiBpZnJhbWUuCiAgICAgICAgICAgIHNsZWVwIDI7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fZnJhbWUoKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQoKKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoUGFnZVNob3duJywKICAgICAgICAgICAgVmFsdWUgPT4gJzQwJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0JywKICAgICAgICAgICAgVmFsdWUgPT4gJzIwMCcsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgIyBDcmVhdGUgRkFRIGNhdGVnb3J5LgogICAgICAgIG15ICRDYXRlZ29yeU5hbWUgPSAiQ2F0ZWdvcnlBJFJhbmRvbUlEIjsKICAgICAgICBteSAkQ2F0ZWdvcnlJRCAgID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICRDYXRlZ29yeU5hbWUsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIFNldHVwIGdyb3VwIGZvciBjYXRlZ29yeS4KICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0ICdleHRlcm5hbCAoY3VzdG9tZXIpJyBzdGF0ZSBJRC4KICAgICAgICBteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICVTdGF0ZXMgPSByZXZlcnNlICVTdGF0ZXM7CgogICAgICAgIG15ICRTdGF0ZUlEID0gJFN0YXRlc3snZXh0ZXJuYWwgKGN1c3RvbWVyKSd9OwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEl0ZW1zOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICJGQVEkQ291bnQtJFJhbmRvbUlEIjsKICAgICAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVFJRCAkSXRlbUlEIGlzIGNyZWF0ZWQgJEZBUVRpdGxlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEl0ZW1zLCB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgUGFnZSAgICAgPT4gKCAkQ291bnQgPCA0ICkgPyAxIDogMiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBDaGVjayBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBUZXN0IGRhdGEgZm9yIGV4cGxvcmVyIHNjcmVlbi4KICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0ZBUSBFeHBsb3JlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntTY3JlZW5EYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntTY3JlZW5EYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIG9uIHRlc3QgY3JlYXRlZCBjYXRlZ29yeSwgZ28gdG8gc3ViY2F0ZWdvcnkgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiJENhdGVnb3J5TmFtZSIsICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBPcmRlciBGQVEgaXRlbSBwZXIgRkFRSUQgYnkgRG93bi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgZm9yIG15ICRUZXN0IChASXRlbXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMzpjb250YWlucyhcIkZBUSBBcnRpY2xlc1wiKScpLmNsb3Nlc3QoJy5XaWRnZXRTaW1wbGUnKS5maW5kKCd0Ym9keSB0cjplcSgkSW5kZXgpIHRkOmVxKDEpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJFRlc3QtPntGQVFUaXRsZX0sCiAgICAgICAgICAgICAgICAiRkFRIEFydGljbGUgJyRUZXN0LT57RkFRVGl0bGV9JyBpcyBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEluZGV4Kys7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIEN1c3RvbWVyRkFRRXhwbG9yZXIgc2hvdyBwYWdpbmF0aW9uIGlmIGNvbmZpZ3VyZWQgU2VhcmNoTGltaXQgaXMgcmVhY2hlZCAoc2VlIGJ1ZyMxMzg4NSkuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSA9PiAnMycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICc1JywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGl0ZW1zIGluIHRoZSBmaXJzdCBwYWdlLgogICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgIG15ICRJc0ZvdW5kID0gKCAkSXRlbS0+e1BhZ2V9ID09IDEgKSA/ICdpcyBmb3VuZCcgOiAnaXMgbm90IGZvdW5kJzsKICAgICAgICAgICAgbXkgJExlbmd0aCAgPSAoICRJdGVtLT57UGFnZX0gPT0gMSApID8gMSAgICAgICAgICA6IDA7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2gzOmNvbnRhaW5zKFwiRkFRIEFydGljbGVzXCIpJykuY2xvc2VzdCgnLldpZGdldFNpbXBsZScpLmZpbmQoJ3RkIGFbaHJlZio9XCJBY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kSXRlbS0+e0l0ZW1JRH1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMZW5ndGgsCiAgICAgICAgICAgICAgICAiUGFnZSAxIC0gRkFRIEFydGljbGUgJyRJdGVtLT57RkFRVGl0bGV9JyAkSXNGb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR28gdG8gc2Vjb25kIHJlc3VsdCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0N1c3RvbWVyRkFRRXhwbG9yZXJQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBpdGVtcyBpbiB0aGUgc2Vjb25kIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgbXkgJElzRm91bmQgPSAoICRJdGVtLT57UGFnZX0gPT0gMiApID8gJ2lzIGZvdW5kJyA6ICdpcyBub3QgZm91bmQnOwogICAgICAgICAgICBteSAkTGVuZ3RoICA9ICggJEl0ZW0tPntQYWdlfSA9PSAyICkgPyAxICAgICAgICAgIDogMDsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnaDM6Y29udGFpbnMoXCJGQVEgQXJ0aWNsZXNcIiknKS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykuZmluZCgndGQgYVtocmVmKj1cIkFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRJdGVtLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExlbmd0aCwKICAgICAgICAgICAgICAgICJQYWdlIDIgLSBGQVEgQXJ0aWNsZSAnJEl0ZW0tPntGQVFUaXRsZX0nICRJc0ZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgRkFRIGNhdGVnb3J5LgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNhdGVnb3J5SUQgJENhdGVnb3J5SUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgRkFRcy4KICAgICAgICBmb3IgbXkgJEZBUSAoQEl0ZW1zKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRSUQgJEZBUS0+e0l0ZW1JRH0gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICBGaWVsZDMgICAgICA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gSUQgJEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lcgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBDdXN0b21lckZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRUHJpbnQ7SXRlbUlEPSRGQVFJRCIpOwoKICAgICAgICAjIHdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZAogICAgICAgIEFDVElWRVNMRUVQOgogICAgICAgIGZvciBteSAkU2Vjb25kICggMSAuLiAyMCApIHsKICAgICAgICAgICAgaWYgKCBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVNvbHV0aW9uICkgPiAtMSwgKSB7CiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRIHByaW50IHZhbHVlcwogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gaXMgZm91bmQgb24gcHJpbnQgc2NyZWVuIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwoKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIEVuYWJsZSBDdXN0b21lckdyb3VwU3VwcG9ydC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJHcm91cFN1cHBvcnQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU2VsZW5pdW0gQ2F0ZWdvcnknLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGNyZWF0ZWQgLSAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGVzdCBncm91cC4KICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKICAgICAgICBteSAkR3JvdXBJRCAgICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICdncm91cCcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ID0+ICdDb21tZW50IGRlc2NyaWJpbmcgdGhlIGdyb3VwJywKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGVzdCBGQVEgY2F0ZWdvcnkgcGVybWlzc2lvbi4KICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBHcm91cElEcyAgID0+IFskR3JvdXBJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEZBUVNlYXJjaDsKICAgICAgICBmb3IgbXkgJFRpdGxlIChxdyggRkFRU2VhcmNoIEZBUUNoYW5nZVNlYXJjaCApKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIDEgLi4gNSApIHsKCiAgICAgICAgICAgICAgICAjIEFkZCB0ZXN0IEZBUS4KICAgICAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgICAgICBteSAkRkFRSUQgICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtICRGQVFJRCIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICVGQVEgPSAoCiAgICAgICAgICAgICAgICAgICAgRkFRSUQgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lci4KICAgICAgICBteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJGQVFTZWFyY2ggZm9ybS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWN1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVNlYXJjaCIpOwoKICAgICAgICAjIENoZWNrIHRpY2tldCBzZWFyY2ggcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoUHJvZmlsZSBOdW1iZXIgRnVsbFRleHQgVGl0bGUgS2V5d29yZCBMYW5ndWFnZUlEcyBDYXRlZ29yeUlEcyBOb1ZvdGVTZXQgVm90ZVBvaW50CiAgICAgICAgICAgIFZvdGVTZWFyY2hUeXBlIE5vUmF0ZVNldCBSYXRlUG9pbnQgUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaCBOb1RpbWVTZXQgRGF0ZSBEYXRlUmFuZ2UKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0IEl0ZW1DcmVhdGVUaW1lUG9pbnQgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhciBJdGVtQ3JlYXRlVGltZVN0b3BNb250aCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhciBTYXZlUHJvZmlsZSBQcm9maWwgU3VibWl0IFJlc3VsdEZvcm0pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggRkFRIGJ5IHRpdGxlIGFuZCBydW4gaXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHRlc3QgRkFRcyBzZWFyY2hlZCBieSAnRkFRKicnCiAgICAgICAgIyBUaGVyZSBhcmUgbm8gdGVzdCBGQVFzLCB1c2VyIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9uIGZvciB0ZXN0IGNhdGVnb3J5LgogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIG5vdCB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID09IC0xLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQWRkIHVzZXIgcGVybWlzc2lvbiBmb3IgdGVzdCBncm91cC4KICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJyktPkdyb3VwTWVtYmVyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRHcm91cElELAogICAgICAgICAgICBVSUQgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBtb3ZlX2ludG8gPT4gMCwKICAgICAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAwLAogICAgICAgICAgICAgICAgb3duZXIgICAgID0+IDAsCiAgICAgICAgICAgICAgICBwcmlvcml0eSAgPT4gMCwKICAgICAgICAgICAgICAgIHJ3ICAgICAgICA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJHcm91cE1lbWJlckFkZCgpIGlzIGRvbmUuIiwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrICdDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMnIGJ1dHRvbiBhZ2Fpbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPUxvYWRQcm9maWxlJyApXSIpCiAgICAgICAgICAgIC0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIEN1c3RvbWVyRkFRU2VhcmNoIHJlc3VsdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRlc3QgRkFRIG9uIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrICdDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMnIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPUxvYWRQcm9maWxlJyApXSIpCiAgICAgICAgICAgIC0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAnY3NzJyApLT5zZW5kX2tleXMoJ0ZBUUNoYW5nZVNlYXJjaConKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDYXRlZ29yeUlEcycpLnZhbCgnJENhdGVnb3J5SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IEZBUXMgc2VhcmNoZWQgYnkgJ0ZBUUNoYW5nZVNlYXJjaConLgogICAgICAgICMgRGVsZXRlIHRlc3QgRkFRcyBhZnRlciBjaGVja2luZy4KICAgICAgICBmb3IgbXkgJEZBUSAoQEZBUVNlYXJjaCkgewoKICAgICAgICAgICAgaWYgKCAkRkFRLT57VHlwZX0gZXEgJ0ZBUUNoYW5nZVNlYXJjaCcgKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUUNoYW5nZVNlYXJjaCogb24gc2NyZWVuLgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBubyB0ZXN0IEZBUVNlYXJjaCogb24gc2NyZWVuLgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA9PSAtMSwKICAgICAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUS0+e0ZBUUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEZBUS0+e0ZBUUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5zZW5kX2tleXMoICRIZWxwZXItPkdldFJhbmRvbUlEKCkgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgbm8gZGF0YSBtZXNzYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwoKICAgICAgICBteSAkRkFRSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ1NlbGVuaXVtS2V5d29yZHMnLAogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIGFuZCBsb2dpbiB0ZXN0IGN1c3RvbWVyLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kRkFRSUQiKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZBUSBJbmZvcm1hdGlvbicgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRhdGEgaXMgZm91bmQgb24gc2NyZWVuIC0gRkFRIEluZm9ybWF0aW9uIiwKICAgICAgICApOwoKICAgICAgICAjIFZlcmlmeSB0ZXN0IEZBUSBpcyBjcmVhdGVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDEnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQyJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMycsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIHRlc3QgY3JlYXRlZCBGQVEgdmFsdWVzLgogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgICAgICAgICAjIFN3aXRjaCB0byBGQVEgc3ltcHRvbSBpZnJhbWUgYW5kIHZlcmlmeSBpdHMgdmFsdWVzLgogICAgICAgICAgICAkU2VsZW5pdW0tPlN3aXRjaFRvRnJhbWUoCiAgICAgICAgICAgICAgICBGcmFtZVNlbGVjdG9yID0+ICIjJFRlc3QtPntJZnJhbWV9IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgV2FpdCB0byBzd2l0Y2ggb24gaWZyYW1lLgogICAgICAgICAgICBzbGVlcCAyOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntGQVFEYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntGQVFEYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX2ZyYW1lKCk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdTZWxlbml1bUtleXdvcmRzJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgJ1NlbGVuaXVtS2V5d29yZHMnIHZhbHVlIGlzIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ2V4dGVybmFsIChjdXN0b21lciknICkgPiAtMSwKICAgICAgICAgICAgIkZBUSBzdGF0ZSB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICcwIG91dCBvZiA1JyApID4gLTEsCiAgICAgICAgICAgICJGQVEgZGVmYXVsdCB2b3RlIHZhbHVlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIFZvdGUgNSBzdGFycyBmb3IgRkFRLgogICAgICAgIG15ICRWb3RlRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1JhdGVCdXR0b24xMDAiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9jaGlsZF9lbGVtZW50KCAkVm90ZUVsZW1lbnQsICIuUmF0ZUJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBpZD0nUmF0ZVN1Ym1pdEJ1dHRvbiddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHZvdGUgbWVzc2FnZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdUaGFua3MgZm9yIHlvdXIgdm90ZSEnICkgPiAtMSwKICAgICAgICAgICAgIkZBUSB2b3RlIG1lc3NhZ2UgaXMgZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnNSBvdXQgb2YgNScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIHZvdGUgdmFsdWUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9CgopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpTZXJ2aWNlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzIyMjUXVldWVzRW5hYmxlZCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgbXkgJUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICAgICAjIGFkZCBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBARkFRQXJ0aWNsZXM7CiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhzdWJqZWN0IGJvZHkpKSB7CiAgICAgICAgICAgIG15ICRUaXRsZSAgID0gJ3RpdGxlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRLZXl3b3JkID0gJEl0ZW0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkRkFRSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20uLi4nLAogICAgICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEZBUUlELAogICAgICAgICAgICAgICAgIkZBUSBhcnRpY2xlIGlzIGNyZWF0ZWQgLSAkRkFRSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUZBUTsKICAgICAgICAgICAgJEZBUXtJRH0gICAgICA9ICRGQVFJRDsKICAgICAgICAgICAgJEZBUXtLZXl3b3JkfSA9ICRLZXl3b3JkOwogICAgICAgICAgICAkRkFRe1RpdGxlfSAgID0gJFRpdGxlIC4gIiAoJENhdGVnb3J5e05hbWV9KSI7CgogICAgICAgICAgICBwdXNoIEBGQVFBcnRpY2xlcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIik7CgogICAgICAgICMgQ2hlY2sgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICBmb3IgbXkgJElEIChxdyhEZXN0IFN1YmplY3QgUmljaFRleHQgQXR0YWNobWVudCBQcmlvcml0eUlEIHN1Ym1pdFJpY2hUZXh0KSkgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgaWYgdW50aWwgUmVsYXRlZEZBUUFydGljbGVzIGJveCBpcyBkaXNwbGF5ZWQKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlczp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nICkgPiAtMSwKICAgICAgICAgICAgIkZvdW5kIGluaXRpYWwgbWVzc2FnZSBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1YmplY3RSYW5kb20gPSAiU3ViamVjdCIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRUZXh0UmFuZG9tICAgID0gIlRleHQiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdWJqZWN0UmFuZG9tKTsKCiAgICAgICAgIyBTZXQgYm9keSB0ZXh0IGFuZCBhZGQgYSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgdG8gdHJpZ2dlciB0aGUgQUpBWCByZXF1ZXN0IGZvciB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZS4KICAgICAgICBzbGVlcCAxOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5zZXREYXRhKCckRkFRQXJ0aWNsZXNbMV0tPntLZXl3b3JkfScpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5nZXREYXRhKCknICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiICIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoICRGQVFBcnRpY2xlc1sxXS0+e0tleXdvcmR9ICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgdGhhdCB0aGUgaGludCBpcyBubyBsb25nZXIgdmlzaWJsZS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoIiNGQVFSZWxhdGVkQXJ0aWNsZXMgLkhpbnQiKS5sZW5ndGgnCiAgICAgICAgKTsKCiAgICAgICAgIyBXYWl0IGZvciBhamF4IGNhbGwgYWZ0ZXIgY3VzdG9tZXIgdXNlciBzZWxlY3Rpb24uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCJzcGFuLkFKQVhMb2FkZXI6dmlzaWJsZSIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlIGZvciB0aGUgaW5zZXJ0IHRleHQgaW4gdGhlIGJvZHkuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbXEB0aXRsZT0nJEZBUUFydGljbGVzWzFdLT57VGl0bGV9J10iKSwKICAgICAgICAgICAgIlJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIGJvZHkgJyRGQVFBcnRpY2xlc1sxXS0+e0tleXdvcmR9JyBpcyBmb3VuZCAtICRGQVFBcnRpY2xlc1sxXS0+e1RpdGxlfSIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgJ0FjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRGQVFBcnRpY2xlc1sxXS0+e0lEfScpXSIpLAogICAgICAgICAgICAiTGluayBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSBpcyBmb3VuZCAtICRGQVFBcnRpY2xlc1swXS0+e1RpdGxlfSIKICAgICAgICApOwoKICAgICAgICAjIENoYW5nZSB0aGUgYm9keSwgdG8gaGF2ZSBhIHRleHQgd2hpY2ggc2hvdWxkIG5vdCByZXR1cm4gc29tZSByZWxhdGVkIGZhcSBhcnRpY2xlLgogICAgICAgIHNsZWVwIDE7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgnQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0LnNldERhdGEoKTsnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdOb3RoaW5nJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiICIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIlxOe1UrRTAwNH0iKTsKCiAgICAgICAgIyBXYWl0IGZvciBhamF4IGNhbGwgYWZ0ZXIgY3VzdG9tZXIgdXNlciBzZWxlY3Rpb24uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCJzcGFuLkFKQVhMb2FkZXI6dmlzaWJsZSIpLmxlbmd0aCcKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRkFRUmVsYXRlZEFydGljbGVzIC5IaW50IikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nICkgPiAtMSwKICAgICAgICAgICAgIkZvdW5kIG1lc3NhZ2UgZm9yIG5vIHJlbGF0ZWQgRkFRIGFydGljbGUiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdCBjYXNlIGZvciBidWcjMTI5MDAgKCBodHRwczovL2J1Z3Mub3Rycy5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTAwICkuCiAgICAgICAgIyBDcmVhdGUgbmV3IGNhdGVncnkgd2hpY2ggaXMgc3ViY2F0ZWdvcnkgb2YgZGVmYXVsdCAnTWlzYycgY2F0ZWdvcnkuCiAgICAgICAgbXkgJFJhbmRvbUlEICAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdTdWJDYXRlZ29yeScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTdWJDYXRlZ29yeScsCiAgICAgICAgICAgIFBhcmVudElEID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHR3byBGQVEgYXJ0aWNsZXMgaW4gTWlzYyBhbmQgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgIG15IEBBcnRpY2xlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiTWlzY0FydGljbGUgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiU3ViQ2F0ZWdvcnlBcnRpY2xlICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRLZXl3b3JkID0gIktleXdvcmQgJFJhbmRvbUlEIjsKICAgICAgICBteSBAUmVsYXRlZEZBUUFydGljbGVzOwogICAgICAgIGZvciBteSAkVGVzdCAoQEFydGljbGVzKSB7CiAgICAgICAgICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUZXN0LT57VGl0bGV9LAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJFRlc3QtPntDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgICAgICJGQVEgYXJ0aWNsZSBpcyBjcmVhdGVkIC0gJEZBUUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAUmVsYXRlZEZBUUFydGljbGVzLCB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAkRkFRSUQsCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGVzdC0+e1RpdGxlfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgVHlwZSBpbiBzdWJqZWN0IGtleXdvcmQgdG8gc2hvdyB0d28gRkFRIGFydGljbGVzIGluIHRoZSBzaWRlIHdpZGdldCBoaW50LgogICAgICAgICMgT25lIGZyb20gJ01pc2MnIGNhdGVnb3J5IGFuZCBzZWNvbmQgb25lIGZyb20gc3ViY2F0ZWdvcnkgb2YgJ01pc2MnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJFJhbmRvbUlEKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgic3Bhbi5BSkFYTG9hZGVyOnZpc2libGUiKS5sZW5ndGgnCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDaGVjayAoQFJlbGF0ZWRGQVFBcnRpY2xlcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEB0aXRsZSwgJyRDaGVjay0+e1RpdGxlfScpXSIpLAogICAgICAgICAgICAgICAgIlJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIHN1YmplY3Qga2V5d29yZCAkUmFuZG9tSUQgaXMgZm91bmQgLSAkQ2hlY2stPntUaXRsZX0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdBY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kQ2hlY2stPntJRH0nKV0iKSwKICAgICAgICAgICAgICAgICJMaW5rIGZvciByZWxhdGVkIEZBUSBhcnRpY2xlIGlzIGZvdW5kIC0gJENoZWNrLT57VGl0bGV9IgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3M7CiAgICAgICAgZm9yIG15ICRGQVEgKCBARkFRQXJ0aWNsZXMsIEBSZWxhdGVkRkFRQXJ0aWNsZXMgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRGQVEtPntJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBjYXRlZ29yeSBJRCAkU3ViQ2F0ZWdvcnlJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENhY2hlIChxdyhGQVEgRkFRS2V5d29yZEFydGljbGVMaXN0KSkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRDYWNoZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBARkFRSURzOwogICAgICAgIGZvciAoIDEgLi4gNSApIHsKICAgICAgICAgICAgbXkgJEZBUVRpdGxlID0gJ0ZBUSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtICRGQVFJRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgRkFRSUQgICAgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBARkFRSURzLCBcJUZBUTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBQdWJsaWNGQVFFeHBsb3JlciBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBQdWJsaWNGQVFFeHBsb3JlciBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyB0ZXN0IGRhdGEgZm9yIGV4cGxvcmVyIHNjcmVlbgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnRkFRIEV4cGxvcmVyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e1NjcmVlbkRhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e1NjcmVlbkRhdGF9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjbGljayBvbiAnTWlzYycsIGdvIG9uIHN1YmNhdGVnb3J5IHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnTWlzYycsICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBvcmRlciBGQVEgaXRlbSBwZXIgRkFRSUQgYnkgRG93bgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0xO1NvcnRCeT1GQVFJRDtPcmRlckJ5PURvd24iCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhbmQgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFJRHMpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57RkFRSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSAkRkFRLT57RkFRVGl0bGV9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRkFRSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFQcmludDtJdGVtSUQ9JEZBUUlEIik7CgogICAgICAgICMgd2FpdCB1bnRpbCBwcmludCBzY3JlZW4gaXMgbG9hZGVkCiAgICAgICAgQUNUSVZFU0xFRVA6CiAgICAgICAgZm9yIG15ICRTZWNvbmQgKCAxIC4uIDIwICkgewogICAgICAgICAgICBpZiAoIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRU29sdXRpb24gKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgIGxhc3QgQUNUSVZFU0xFRVA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICB9CgogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBGQVEgcHJpbnQgdmFsdWVzCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntGQVFEYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntGQVFEYXRhfSAtIGZvdW5kIG9uIHByaW50IHNjcmVlbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRUlNTIGNyZWF0ZWQgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DcmVhdGVkIik7CgogICAgICAgICMgdmVyaWZ5IEZBUVJTUyBjcmVhdGVkIHNjcmVlbgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyApID4gLTEsCiAgICAgICAgICAgICJGQVFSU1MgY3JlYXRlZCB0aXRsZSBmb3VuZCAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JEZBUUlEIiApID4gLTEsCiAgICAgICAgICAgICJGQVEgbGluayAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVJTUyBjaGFuZ2VkIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q2hhbmdlZCIpOwoKICAgICAgICAjIHZlcmlmeSBGQVFSU1MgY2hhbmdlZCBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJyApID4gLTEsCiAgICAgICAgICAgICJGQVFSU1MgY2hhbmdlZCB0aXRsZSBmb3VuZCAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kRkFRSUQiICkgPiAtMSwKICAgICAgICAgICAgIkZBUSBsaW5rIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBARkFRU2VhcmNoOwogICAgICAgIGZvciBteSAkVGl0bGUgKHF3KCBGQVFTZWFyY2ggRkFRQ2hhbmdlU2VhcmNoICkpIHsKCiAgICAgICAgICAgICMgYWRkIHRlc3QgRkFRCiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkRkFRSUQsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSAkRkFRSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUZBUSA9ICgKICAgICAgICAgICAgICAgIEZBUUlEICAgID0+ICRGQVFJRCwKICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRU2VhcmNoIGZvcm0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRU2VhcmNoIik7CgogICAgICAgICMgY2hlY2sgdGlja2V0IHNlYXJjaCBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE51bWJlciBGdWxsVGV4dCBUaXRsZSBLZXl3b3JkIExhbmd1YWdlSURzIENhdGVnb3J5SURzIE5vVm90ZVNldCBWb3RlUG9pbnQKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgTm9SYXRlU2V0IFJhdGVQb2ludCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoIE5vVGltZVNldCBEYXRlIERhdGVSYW5nZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQgSXRlbUNyZWF0ZVRpbWVQb2ludCBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyIEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoIEl0ZW1DcmVhdGVUaW1lU3RvcERheQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyIFN1Ym1pdCBSZXN1bHRGb3JtKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIEZBUSBieSB0aXRsZSBhbmQgcnVuIGl0CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIFB1YmxpY0ZBUVNlYXJjaCByZXN1bHQgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJwogICAgICAgICMgYWxsIEZBUXMgd2lsbCBiZSBpbiBhIHNlYXJjaCByZXN1bHQKICAgICAgICBmb3IgbXkgJEZBUSAoQEZBUVNlYXJjaCkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwncHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFTZWFyY2gnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IEZBUXMgc2VhcmNoZWQgYnkgJ0ZBUUNoYW5nZVNlYXJjaConCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgIGlmICggJEZBUS0+e1R5cGV9IGVxICdGQVFDaGFuZ2VTZWFyY2gnICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVFDaGFuZ2VTZWFyY2gqIG9uIHNjcmVlbgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IC0gZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHRlc3QgRkFRU2VhcmNoKiBvbiBzY3JlZW4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCAkSGVscGVyLT5HZXRSYW5kb21JRCgpICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIG5vIGRhdGEgbWVzc2FnZQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzCiAgICAgICAgZm9yIG15ICREZWxldGUgKEBGQVFTZWFyY2gpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJERlbGV0ZS0+e0ZBUUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJERlbGV0ZS0+e0ZBUVRpdGxlfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEZBUUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdTZWxlbml1bUtleXdvcmRzJywKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICBGaWVsZDMgICAgICA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRWm9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kRkFRSUQiKTsKCiAgICAgICAgIyBjaGVjayBwYWdlCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRkFRIEluZm9ybWF0aW9uJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgZGF0YSBpcyBmb3VuZCBvbiBzY3JlZW4gLSBGQVEgSW5mb3JtYXRpb24iLAogICAgICAgICk7CgogICAgICAgICMgdmVyaWZ5IHRlc3QgRkFRIGlzIGNyZWF0ZWQKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDEnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQyJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMycsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRlc3QgY3JlYXRlZCBGQVEgdmFsdWVzCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAgICAgICAgICMgc3dpdGNoIHRvIEZBUSBzeW1wdG9tIGlmcmFtZSBhbmQgdmVyaWZ5IGl0cyB2YWx1ZXMKICAgICAgICAgICAgJFNlbGVuaXVtLT5Td2l0Y2hUb0ZyYW1lKAogICAgICAgICAgICAgICAgRnJhbWVTZWxlY3RvciA9PiAiIyRUZXN0LT57SWZyYW1lfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFdhaXQgdG8gc3dpdGNoIG9uIGlmcmFtZS4KICAgICAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX2ZyYW1lKCk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdTZWxlbml1bUtleXdvcmRzJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgJ1NlbGVuaXVtS2V5d29yZHMnIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAncHVibGljIChhbGwpJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgc3RhdGUgdmFsdWUgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICcwIG91dCBvZiA1JyApID4gLTEsCiAgICAgICAgICAgICJGQVEgZGVmYXVsdCB2b3RlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQoKKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgc2V0IEZBUSBkYXNoYm9hcmQgU3lzQ29uZmlnIHBhcmFtCiAgICAgICAgbXkgQEZBUURhc2hib2FyZCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTgtRkFRLUxhc3RDaGFuZ2UnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgU3lzQ29uZmlnIG9iamVjdC4KICAgICAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICAgICAjIHNldCBGQVEgZGFzaGJvYXJkIG1vZHVsZXMgb24gZGVmYXVsdCBzZXR0aW5ncwogICAgICAgIGZvciBteSAkRGVmYXVsdFN5c0NvbmZpZyAoQEZBUURhc2hib2FyZCkgewoKICAgICAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkRGVmYXVsdFN5c0NvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJVZhbHVlID0gbWFwIHsgJF8tPntLZXl9ID0+ICRfLT57Q29udGVudH0gfQogICAgICAgICAgICAgICAgZ3JlcCB7IGRlZmluZWQgJF8tPntLZXl9IH0gQHsgJFNldHRpbmd7U2V0dGluZ30tPlsxXS0+e0hhc2h9LT5bMV0tPntJdGVtfSB9OwoKICAgICAgICAgICAgJERlZmF1bHRTeXNDb25maWctPntWYWx1ZX0gPSBcJVZhbHVlOwoKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkRGVmYXVsdFN5c0NvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gXCVWYWx1ZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgY29uZmlnIG9iamVjdC4KICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKEBGQVFEYXNoYm9hcmQpIHsKCiAgICAgICAgICAgICMgZGlzYWJsZSBhbGwgZGFzaGJvYXJkIHBsdWctaW5zCiAgICAgICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Rhc2hib2FyZEJhY2tlbmQnKTsKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJSRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGVuYWJsZSBGQVEgZGFzaGJvYXJkCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRUZXN0LT57VmFsdWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBuYXZpZ2F0ZSB0byBkYXNoYm9hcmQgc2NyZWVuCiAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RGFzaGJvYXJkIik7CgogICAgICAgICAgICAjIGNoZWNrIHRpdGxlIGZvciB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgdGl0bGUgaXMgZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBsaW5rIGZvciB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFJRCIgKSA+IC0xLAogICAgICAgICAgICAgICAgIlRlc3QgRkFRIGxpbmsgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRSm91cm5hbCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUpvdXJuYWwiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgSm91cm5hbCBPdmVydmlldyBjb2x1bW5zCiAgICAgICAgZm9yIG15ICRDb2x1bW5zICggJ0ZBUSMnLCAnVGl0bGUnLCAnQ2F0ZWdvcnknLCAnQWN0aW9uJywgJ1RpbWUnICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29sdW1ucyApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29sdW1uICRDb2x1bW5zIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEZBUUlEIik7CgogICAgICAgICMgY3JlYXRlIG1lbnUgbW9kdWxlIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQE1lbnVNb2R1bGUgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAiRWRpdCIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gIkFnZW50RkFRRWRpdDtJdGVtSUQ9JEZBUUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICJIaXN0b3J5IiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAiQWdlbnRGQVFIaXN0b3J5O0l0ZW1JRD0kRkFRSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIlByaW50IiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAiQWdlbnRGQVFQcmludDtJdGVtSUQ9JEZBUUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICJMaW5rIiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAiQWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1GQVEiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIkRlbGV0ZSIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gIkFnZW50RkFRRGVsZXRlO0l0ZW1JRD0kRkFRSUQiLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgRkFRIG1lbnUgbW9kdWxlcwogICAgICAgIGZvciBteSAkRkFRWm9vbU1lbnVNb2R1bGUgKEBNZW51TW9kdWxlKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPSRGQVFab29tTWVudU1vZHVsZS0+e0FjdGlvbn0nICldIiksCiAgICAgICAgICAgICAgICAiRkFRIG1lbnUgJEZBUVpvb21NZW51TW9kdWxlLT57TmFtZX0gaXMgZm91bmQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEZBUUlEIiwKICAgICAgICApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUSBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NlbGVuaXVtIENhdGVnb3J5JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMiwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgaXMgY3JlYXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0ZXN0IEZBUSBjYXRlZ29yeSBwZXJtaXNzaW9uCiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICdmYXEnLAogICAgICAgICk7CgogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgRkFRCiAgICAgICAgbXkgJEZBUVRpdGxlID0gJ0ZBUSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRkFRSUQgICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRRXhwbG9yZXIgc2NyZWVuIGZvciB0ZXN0IEZBUSBjYXRlZ29yeQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDtOYXY9Iik7CgogICAgICAgICMgY2hlY2sgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgZm9yIG15ICRDb2x1bW5zICggJ0ZBUSMnLCAnVGl0bGUnLCAnTGFuZ3VhZ2UnLCAnU3RhdGUnLCAnVmFsaWRpdHknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29sdW1ucyApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29sdW1uICRDb2x1bW5zIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUSBjYXRlZ29yeQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2ludGVybmFsJyA9PiAnaW50ZXJuYWwgKGFnZW50KScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRkFRSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnZmFxJywgJ2ZhcV9hZG1pbicgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO05hdj0iICkgPiAtMSwKICAgICAgICAgICAgIkFkdmFuY2VkIFNlYXJjaCBidXR0b24gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCBGQVEgaW4gcXVpY2stc2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU2VhcmNoJ10iKS0+c2VuZF9rZXlzKCRGQVFUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1NlYXJjaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIGZvciBxdWljay1zZWFyY2ggcmVzdWx0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2V4dGVybmFsJyA9PiAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRkFRSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGFuZCBsb2dpbiB0ZXN0IGN1c3RvbWVyCiAgICAgICAgbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlciIpOwoKICAgICAgICAjIGNoZWNrIGZvciAnQWR2YW5jZWQgU2VhcmNoJyBidXR0b24KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJBY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2giICkgPiAtMSwKICAgICAgICAgICAgIkFkdmFuY2VkIFNlYXJjaCBidXR0b24gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCBGQVEgaW4gcXVpY2stc2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU2VhcmNoJ10iKS0+c2VuZF9rZXlzKCRGQVFUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1NlYXJjaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIGZvciBxdWljay1zZWFyY2ggcmVzdWx0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUUlEICAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRGQVFJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIHB1YmxpYyBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD8iKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDsiICkgPiAtMSwKICAgICAgICAgICAgIkFkdmFuY2VkIFNlYXJjaCBidXR0b24gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCBGQVEgaW4gcXVpY2stc2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU2VhcmNoJ10iKS0+c2VuZF9rZXlzKCRGQVFUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1NlYXJjaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIGZvciBxdWljay1zZWFyY2ggcmVzdWx0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0d28gdGVzdCBGQVEKICAgICAgICBteSBARkFRSURzOwogICAgICAgIG15IEBGQVFUaXRsZXM7CiAgICAgICAgZm9yIG15ICRGQVEgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRGQVFJRCAgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRGQVFJRCwKICAgICAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkRkFRSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBARkFRSURzLCAgICAkRkFRSUQ7CiAgICAgICAgICAgIHB1c2ggQEZBUVRpdGxlcywgJEZBUVRpdGxlOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdmYXEnLCAnZmFxX2FkbWluJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEZBUUlEc1swXSIpOwoKICAgICAgICAjIGNsaWNrIG9uICdMaW5rJwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB0byBsaW5rIG9iamVjdCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgbGluayB0d28gdGVzdCBjcmVhdGVkIEZBUXMKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J1NFQVJDSDo6VGl0bGUnXSIpLT5zZW5kX2tleXMoICRGQVFUaXRsZXNbMV0gKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU2VhcmNoJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+Y2xvc2UoKTsKCiAgICAgICAgIyBiYWNrIHRvIEFnZW50RkFRWm9vbQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIHZlcmlmeSBGQVEgbGluawogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGVzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlRlc3QgdGlja2V0IHRpdGxlICRGQVFUaXRsZXNbMV0gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gJ0xpbmsnIGFuZCBzd2l0Y2ggc2NyZWVucwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB0byBsaW5rIG9iamVjdCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgZGVsZXRlIGxpbmsgcmVsYXRpb24KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdTdWJhY3Rpb249TGlua0RlbGV0ZScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NlbGVjdEFsbExpbmtzMCddIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5jbG9zZSgpOwoKICAgICAgICAjIGJhY2sgdG8gQWdlbnRGQVFab29tCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgdmVyaWZ5IHRoYXQgbGluayBoYXMgYmVlbiByZW1vdmVkCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZXNbMV0gKSA9PSAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZXNbMV0gaXMgbm90IGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRcwogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkRkFRSUQgKEBGQVFJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEZBUUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKCiAgICB9Cik7CgoxOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBDb25maXJtYXRpb25EaWFsb2cuCiAqLwpGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgRGlhbG9nRGF0YQogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEB2YXJpYWJsZQogICAgICogQHByaXZhdGUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgZnJvbSB0aGUgRFRMIGFuZCBjb250YWluIGFsbCB0aGUgZGF0YSB0aGF0IHRoZSBkaWFsb2cgbmVlZHMuCiAgICAgKi8KICAgIHZhciBEaWFsb2dEYXRhID0gW107CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93V2FpdGluZ0RpYWxvZwogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQb3NpdGlvblRvcCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIHdhaXRpbmcgZGlhbG9nIHVudGlsIHNlYXJjaCBzY3JlZW4gaXMgcmVhZHkuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNob3dXYWl0aW5nRGlhbG9nKFBvc2l0aW9uVG9wKXsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygnPGRpdiBjbGFzcz0iU3BhY2luZyBDZW50ZXIiPjxzcGFuIGNsYXNzPSJBSkFYTG9hZGVyIiB0aXRsZT0iJyArIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpICsgJyI+PC9zcGFuPjwvZGl2PicsICcnLCBQb3NpdGlvblRvcCwgJ0NlbnRlcicsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd0NvbmZpcm1hdGlvbkRpYWxvZwogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IGZhbHNlCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8uCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dDb25maXJtYXRpb25EaWFsb2cgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgIHZhciBMb2NhbERpYWxvZ0RhdGEsCiAgICAgICAgICAgIFBvc2l0aW9uVG9wLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBCdXR0b25zOwoKICAgICAgICAvLyBnZXQgZ2xvYmFsIHNhdmVkIERpYWxvZ0RhdGEgZm9yIHRoaXMgZnVuY3Rpb24KICAgICAgICBMb2NhbERpYWxvZ0RhdGEgPSBEaWFsb2dEYXRhWyQodGhpcykuYXR0cignaWQnKV07CgogICAgICAgIC8vIGRlZmluZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRpYWxvZwogICAgICAgIFBvc2l0aW9uVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgKCQod2luZG93KS5oZWlnaHQoKSAqIDAuMyk7CgogICAgICAgIC8vIHNob3cgd2FpdGluZyBkaWFsb2cKICAgICAgICBTaG93V2FpdGluZ0RpYWxvZyhQb3NpdGlvblRvcCk7CgogICAgICAgIC8vIGFqYXggY2FsbCB0byB0aGUgbW9kdWxlIHRoYXQgZGVsZXRlcyB0aGUgdGVtcGxhdGUKICAgICAgICBEYXRhID0gTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CgogICAgICAgICAgICAvLyAnQ29uZmlybWF0aW9uJyBvcGVucyBhIGRpYWxvZyB3aXRoIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgICAgICAgICBpZiAoUmVzcG9uc2UuRGlhbG9nVHlwZSA9PT0gJ0NvbmZpcm1hdGlvbicpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZpbmUgeWVzIGFuZCBubyBidXR0b25zCiAgICAgICAgICAgICAgICBCdXR0b25zID0gW3sKICAgICAgICAgICAgICAgICAgICBMYWJlbDogTG9jYWxEaWFsb2dEYXRhLlRyYW5zbGF0ZWRUZXh0LlllcywKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAoKICAgICAgICAgICAgICAgICAgICAvLyBkZWZpbmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlICdZZXMnIGJ1dHRvbiBpcyBwcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uKCl7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIFllcyBhbmQgTm8gYnV0dG9ucyB0byBwcmV2ZW50IG11bHRpcGxlIHN1Ym1pdHMKICAgICAgICAgICAgICAgICAgICAgICAgJCgnZGl2LkRpYWxvZzp2aXNpYmxlIGRpdi5Db250ZW50Rm9vdGVyIGJ1dHRvbicpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgbW9kdWxlIHRoYXQgZG9lcyB0aGUgY29uZmlybWVkIGFjdGlvbiBhZnRlciBwcmVzc2luZyB0aGUgWWVzIGJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgTG9jYWxEaWFsb2dEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBMYWJlbDogTG9jYWxEaWFsb2dEYXRhLlRyYW5zbGF0ZWRUZXh0Lk5vLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICJDbG9zZSIKICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyAnTWVzc2FnZScgb3BlbnMgYSBkaWFsb2cgd2l0aCAxIGJ1dHRvbjogT2sKICAgICAgICAgICAgZWxzZSBpZiAoUmVzcG9uc2UuRGlhbG9nVHlwZSA9PT0gJ01lc3NhZ2UnKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmaW5lIE9rIGJ1dHRvbgogICAgICAgICAgICAgICAgQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IExvY2FsRGlhbG9nRGF0YS5UcmFuc2xhdGVkVGV4dC5PaywKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICJDbG9zZSIKICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzaG93IHRoZSBjb25maXJtYXRpb24gZGlhbG9nIHRvIGNvbmZpcm0gdGhlIGFjdGlvbgogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhSZXNwb25zZS5IVE1MLCBMb2NhbERpYWxvZ0RhdGEuRGlhbG9nVGl0bGUsIFBvc2l0aW9uVG9wLCAiQ2VudGVyIiwgdHJ1ZSwgQnV0dG9ucyk7CiAgICAgICAgfSwgJ2pzb24nKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgQmluZENvbmZpcm1hdGlvbkRpYWxvZwogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhdGEgLSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBiaW5kZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGJpbmRzIGEgY2xpY2sgZXZlbnQgdG8gdGhlIGRlZmluZWQgZWxlbWVudAogICAgICovCiAgICBUYXJnZXROUy5CaW5kQ29uZmlybWF0aW9uRGlhbG9nID0gZnVuY3Rpb24gKERhdGEpIHsKICAgICAgICBEaWFsb2dEYXRhW0RhdGEuRWxlbWVudElEXSA9IERhdGE7CgogICAgICAgIC8vIGJpbmRpbmcgYSBjbGljayBldmVudCB0byB0aGUgZGVmaW5lZCBlbGVtZW50CiAgICAgICAgJChEaWFsb2dEYXRhW0RhdGEuRWxlbWVudElEXS5FbGVtZW50U2VsZWN0b3IpLmJpbmQoJ2NsaWNrJywgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5TaG93Q29uZmlybWF0aW9uRGlhbG9nKTsKICAgIH07CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5BZ2VudC5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5GQVFab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgZGVmYXVsdCBjb25maWcgc2V0dGluZy4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CiAgICAgICAgdmFyIE5ld0hlaWdodDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIC8vIHNsaWdodGx5IGNoYW5nZSB0aGUgd2lkdGggb2YgdGhlIGlmcmFtZSB0byBub3QgYmUgZXhhY3RseSAxMDAlIHdpZHRoIGFueW1vcmUKICAgICAgICAgICAgLy8gdGhpcyBwcmV2ZW50cyBhIGRvdWJsZSBob3Jpem9udGFsIHNjcm9sbGJhciAoZnJvbSBpZnJhbWUgYW5kIHN1cnJvdW5kaW5nIGRpdikKICAgICAgICAgICAgJElmcmFtZS53aWR0aCgkSWZyYW1lLndpZHRoKCkgLSAyKTsKCiAgICAgICAgICAgIE5ld0hlaWdodCA9ICRJZnJhbWUuY29udGVudHMoKS5maW5kKCdib2R5JykuaGVpZ2h0KCk7CgogICAgICAgICAgICAvLyBpZiB0aGUgaUZyYW1lcyBoZWlnaHQgaXMgMCwgd2UgY29sbGFwc2UgdGhlIHdpZGdldAogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID09PSAwKSB7CiAgICAgICAgICAgICAgICAkSWZyYW1lLmNsb3Nlc3QoJy5XaWRnZXRTaW1wbGUnKS5yZW1vdmVDbGFzcygnRXhwYW5kZWQnKS5hZGRDbGFzcygnQ29sbGFwc2VkJyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IDApIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJElmcmFtZS5oZWlnaHQoTmV3SGVpZ2h0ICsgJ3B4Jyk7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBpbml0IGJyb3dzZXIgbGluayBtZXNzYWdlIGNsb3NlIGJ1dHRvbgogICAgaWYgKCQoJy5GQVFNZXNzYWdlQnJvd3NlcicpLmxlbmd0aCkgewogICAgICAgICQoJy5GQVFNZXNzYWdlQnJvd3NlciBhLkNsb3NlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5mYWRlT3V0KCJzbG93Iik7CiAgICAgICAgICAgIENvcmUuQWdlbnQuUHJlZmVyZW5jZXNVcGRhdGUoJ1VzZXJBZ2VudERvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZScsIDEpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5GQVFab29tIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Q29tcG9zZS4KICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdEZBUVRpY2tldENvbXBvc2UKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgVGhlIGVkaXRvcgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXRpYWxpemUgdGhlIG5lZWRlZCBzdHVmZiBmb3IgdGhlIEZBUSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aWNrZXQgc2NyZWVucy4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdEZBUVRpY2tldENvbXBvc2UgPSBmdW5jdGlvbiAoJEVsZW1lbnQpIHsKCiAgICAgICAgLy8gU2VlIGJ1ZyM5MTE2OgogICAgICAgIC8vIEluIENocm9tZSBzb21ldGltZXMgdGhlIGNsaWNrIGV2ZW50IGlzIHRyaWdnZXJlZCBiZWZvcmUgdGhlIGZvY3VzIGV2ZW50CiAgICAgICAgLy8gd2UgcHJldmVudCB0aGF0IGJ5IGNoZWNraW5nIEVkaXRvckdvdEZvY3VzIGZpcnN0CiAgICAgICAgdmFyIEluc3RhbmNlTmFtZSA9ICRFbGVtZW50LmF0dHIoJ2lkJyksCiAgICAgICAgICAgIEVkaXRvckdvdEZvY3VzID0gZmFsc2U7CgogICAgICAgIGZ1bmN0aW9uIEdldEN1cnNvclBvc2l0aW9uKCkgewogICAgICAgICAgICB2YXIgRWxlbWVudCA9ICRFbGVtZW50WzBdLAogICAgICAgICAgICAgICAgUmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUsCiAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gMCwKICAgICAgICAgICAgICAgIEVuZFJhbmdlID0gMDsKICAgICAgICAgICAgLy8gRmlyZWZveAogICAgICAgICAgICBpZiAoRWxlbWVudC5zZWxlY3Rpb25TdGFydCkgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7CiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uRW5kOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIElFCiAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgUmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTsKICAgICAgICAgICAgICAgIFRleHRSYW5nZSA9IEVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUgPSBUZXh0UmFuZ2UuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UubW92ZVRvQm9va21hcmsoUmFuZ2UuZ2V0Qm9va21hcmsoKSk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBUZXh0UmFuZ2UpOwogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVuZFJhbmdlID0gVGV4dFJhbmdlRHVwbGljYXRlLnRleHQubGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIGN1cnNvciBwb3NpdGlvbiBmb3IgbGF0ZXIgdXNhZ2UKICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQ3Vyc29yJywgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZTogU3RhcnRSYW5nZSwKICAgICAgICAgICAgICAgIEVuZFJhbmdlOiBFbmRSYW5nZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIFJlZ2lzdGVyIFJURSBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uCiAgICAgICAgaWYgKHR5cGVvZiBDS0VESVRPUiAhPT0gJ3VuZGVmaW5lZCcgJiYgQ0tFRElUT1IgJiYgQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0KSB7CiAgICAgICAgICAgIC8vIEdldCBsYXN0IGN1cnNvciBwb3NpdGlvbiBhbmQgc2F2ZSBpdCAob24gZm9jdXMgd2UgY29tZSBiYWNrIHRvIHRoaXMgcG9zaXRpb24pCiAgICAgICAgICAgIENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLm9uKCdjb250ZW50RG9tJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5kb2N1bWVudC5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEVkaXRvckdvdEZvY3VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InLCBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5kb2N1bWVudC5vbigna2V5dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEVkaXRvckdvdEZvY3VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InLCBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gbmVlZGVkIGZvciBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGFuZCBpbnNlcnRpbmcgZGF0YSBpbnRvIFJURQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignZm9jdXMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBhIHNhdmVkIGN1cnNvciBwb3NpdGlvbiBleGlzdHMsIHNldCB0aGlzIHBvc2l0aW9uIG5vdwogICAgICAgICAgICAgICAgdmFyIFJURUN1cnNvclJhbmdlID0gJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicpLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbjsKCiAgICAgICAgICAgICAgICBFZGl0b3JHb3RGb2N1cyA9IHRydWU7CgogICAgICAgICAgICAgICAgaWYgKFJURUN1cnNvclJhbmdlKSB7CiAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uID0gbmV3IENLRURJVE9SLmRvbS5zZWxlY3Rpb24oQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbi5zZWxlY3RSYW5nZXMoUlRFQ3Vyc29yUmFuZ2UpOwogICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBzYXZlZCBjdXJzb3IgcG9zaXRpb24gKHRvIG5vdCBrZWVwIG9sZCBzdHVmZikKICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgdW5kZWZpbmVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIC8vIFJlZ2lzdGVyIGV2ZW50cyBmb3Igc2F2aW5nIHRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGV4dGFyZWEKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEVsZW1lbnQudW5iaW5kKCdjbGljay5GQVFDb21wb3NpbmcnKS5iaW5kKCdjbGljay5GQVFDb21wb3NpbmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBHZXRDdXJzb3JQb3NpdGlvbigpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJEVsZW1lbnQudW5iaW5kKCdrZXl1cC5GQVFDb21wb3NpbmcnKS5iaW5kKCdrZXl1cC5GQVFDb21wb3NpbmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBHZXRDdXJzb3JQb3NpdGlvbigpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgU2V0RGF0YQogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGQVFUaXRsZSBvZiBhIEZBUSBhcnRpY2xlIHRvIGJlIHJldHVybmVkIGludG8gdGlja2V0IFN1YmplY3QKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGQVFDb250ZW50IG9mIGEgRkFRIGFydGljbGUgYW5kL29yIExpbmsgdG8gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaW4gcGxhaW4gdGV4dAogICAgICogQHBhcmFtIHtTdHJpbmd9IEZBUUhUTUxDb250ZW50IG9mIGEgRkFRIGFydGljbGUgYW5kL29yIExpbmsgdG8gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaW4gSFRNTAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIERvIG5vdGhpbmcgYW5kIHNob3cgYW4gZXJyb3IgbWVzc2FnZS4KICAgICAqLwogICAgZnVuY3Rpb24gU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KSB7CgogICAgICAgIHZhciAkUGFyZW50U3ViamVjdCA9ICQoJyNTdWJqZWN0JywgcGFyZW50LmRvY3VtZW50KSwKICAgICAgICAgICAgJFBhcmVudEJvZHkgPSAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLAogICAgICAgICAgICBQYXJlbnRCb2R5ID0gJFBhcmVudEJvZHlbMF0sCiAgICAgICAgICAgIFBhcmVudEJvZHlWYWx1ZSA9ICRQYXJlbnRCb2R5LnZhbCgpLAogICAgICAgICAgICBSYW5nZSwKICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgIEVuZFJhbmdlID0gMCwKICAgICAgICAgICAgTmV3UG9zaXRpb24gPSAwOwoKICAgICAgICBpZiAoJCgnI1N1YmplY3QnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCAmJiAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCkgewoKICAgICAgICAgICAgaWYgKENvcmUuQ29uZmlnLkdldCgnVGlja2V0Q29tcG9zZS5VcGRhdGVBcnRpY2xlU3ViamVjdCcpID09PSAnMScgJiYgJCgnI1VwZGF0ZUFydGljbGVTdWJqZWN0T3B0aW9uJykucHJvcCgnY2hlY2tlZCcpKSB7CiAgICAgICAgICAgICAgICAvLyBjb3B5IHN1YmplY3QKICAgICAgICAgICAgICAgIGlmICgkUGFyZW50U3ViamVjdC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkUGFyZW50U3ViamVjdC52YWwoRkFRVGl0bGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmVudFN1YmplY3QudmFsKCRQYXJlbnRTdWJqZWN0LnZhbCgpICsgJyAtICcgKyBGQVFUaXRsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBGQVEgdGV4dCBhbmQvb3IgbGluayB0byBXWVNJV1lHIGVkaXRvciBpbiBwYXJlbnQgd2luZG93CiAgICAgICAgICAgIGlmIChwYXJlbnQuQ0tFRElUT1IgJiYgcGFyZW50LkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAgICAgcGFyZW50LkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5mb2N1cygpOwogICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhpcyBjb21tYW5kIHRocm93cyBhbiBlcnJvciAoYWx0aG91Z2ggaW5zZXJ0aW5nIHRoZSBIVE1MIHdvcmtzKQogICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgYWxzbyB3b3Jrcywgd2UganVzdCB3cmFwIGl0IGluIGEgdHJ5LWNhdGNoLXN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuaW5zZXJ0SHRtbChGQVFIVE1MQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoIChFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkLm5vb3AoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGluc2VydCBib2R5IGFuZC9vciBsaW5rIHRvIHRleHRhcmVhIChpZiBwb3NzaWJsZSB0byBjdXJzb3IgcG9zaXRpb24gb3RoZXJ3aXNlIHRvIHRoZSB0b3ApCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gR2V0IHByZXZpb3VzbHkgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgICAgICAgICBpZiAocGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykpIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gcGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykuU3RhcnRSYW5nZTsKICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLkVuZFJhbmdlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgdGV4dCB0byB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJFBhcmVudEJvZHkudmFsKFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoMCwgU3RhcnRSYW5nZSkgKyBGQVFDb250ZW50ICsgUGFyZW50Qm9keVZhbHVlLnN1YnN0cihFbmRSYW5nZSwgUGFyZW50Qm9keVZhbHVlLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgTmV3UG9zaXRpb24gPSBTdGFydFJhbmdlICsgRkFRQ29udGVudC5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gSnVtcCB0byBuZXcgY3Vyc29yIHBvc2l0aW9uIChhZnRlciBpbnNlcnRlZCB0ZXh0KQogICAgICAgICAgICAgICAgaWYgKFBhcmVudEJvZHkuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0ID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25FbmQgPSBOZXdQb3NpdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBOZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoJyRKU1RleHR7IlRoaXMgd2luZG93IG11c3QgYmUgY2FsbGVkIGZyb20gY29tcG9zZSB3aW5kb3cifScpOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgU2V0VGV4dAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0VGV4dCB0byBhZGQgRkFRIGl0ZW0gdGV4dCBvciBub3QKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0TGluayB0byBhZGQgRkFRIGl0ZW0gbGluayBvciBub3QKICAgICAqLwogICAgVGFyZ2V0TlMuU2V0VGV4dCA9IGZ1bmN0aW9uIChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKSB7CiAgICAgICAgdmFyIEZBUVRpdGxlID0gJCgnI0ZBUVRpdGxlJykudmFsKCksCiAgICAgICAgRkFRQ29udGVudCA9ICcnLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJycsCiAgICAgICAgRkFRTGluazsKCiAgICAgICAgaWYgKEluc2VydFRleHQgPT09IDEpIHsKICAgICAgICAgICAgRkFRQ29udGVudCA9ICQoJyNGQVFCb2R5JykudmFsKCk7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRQ29udGVudDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSAnJzsKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFDb250ZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKEluc2VydExpbmsgPT09IDEpIHsKICAgICAgICAgICAgRkFRTGluayA9ICQoJyNGQVFQdWJsaWNMaW5rJykudmFsKCk7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRSFRNTENvbnRlbnQgKyAnPGJyLz4nICsgJzxhIGhyZWY9IicgKyBGQVFMaW5rICsgJyI+JyArIEZBUVRpdGxlICsgJzwvYT4nOwogICAgICAgIH0KCiAgICAgICAgU2V0RGF0YShGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpOwogICAgfTsKCgogICAgLyoqCiAgICAgKiBAbmFtZSBTZXRGdWxsRkFRCiAgICAgKiBAbWVtYmVyb2YgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtCb29sZWFufSBJbnNlcnRUZXh0IHRvIGFkZCBGQVEgaXRlbSB0ZXh0IG9yIG5vdAogICAgICogQHBhcmFtIHtCb29sZWFufSBJbnNlcnRMaW5rIHRvIGFkZCBGQVEgaXRlbSBsaW5rIG9yIG5vdAogICAgICovCiAgICBUYXJnZXROUy5TZXRGdWxsRkFRID0gZnVuY3Rpb24gKEluc2VydFRleHQsIEluc2VydExpbmspIHsKCiAgICAgICAgLy8gZ2V0IHRoZSBGQVEgcmljaHRleHQgYW5kIHRyaWdnZXIgYXR0YWNobWVudCBwcm9jZXNzaW5nCiAgICAgICAgcGFyZW50LkNvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIHBhcmVudC5Db3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RkFRUmljaFRleHQnLAogICAgICAgICAgICAgICAgSXRlbUlEOiAkKCdpbnB1dFtuYW1lPUZBUUlEXScpLnZhbCgpLAogICAgICAgICAgICAgICAgRm9ybUlEOiBwYXJlbnQuJCgnaW5wdXRbbmFtZT1Gb3JtSURdJykudmFsKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICB2YXIgRkFRVGl0bGUgPSBSZXNwb25zZS5GQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gJycsCiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSAnJywKICAgICAgICAgICAgICAgICAgICBGQVFMaW5rOwoKICAgICAgICAgICAgICAgIGlmIChJbnNlcnRUZXh0ID09PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgRkFRQ29udGVudCA9IFJlc3BvbnNlLkZBUUNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBSZXNwb25zZS5GQVFIVE1MQ29udGVudDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoSW5zZXJ0TGluayA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIEZBUUxpbmsgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFIVE1MQ29udGVudCArICc8YnIvPjxici8+JyArICc8YSBocmVmPSInICsgRkFRTGluayArICciPicgKyBGQVFUaXRsZSArICc8L2E+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBzeW5jIHRoZSBhdHRhY2htZW50IGxpc3Qgd2l0aCB0aGUgYXR0YWNobWVudHMgaW4gdGhlIFVwbG9hZENhY2hlCiAgICAgICAgICAgICAgICAvLyAxc3Q6IGRlbGV0ZSB0aGUgY3VycmVudCBhdHRhY2htZW50IGxpc3QKICAgICAgICAgICAgICAgICQoJyNGaWxlVXBsb2FkJywgcGFyZW50LmRvY3VtZW50KS5wYXJlbnQoKS5zaWJsaW5ncygnbGknKS5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAvLyAybmQ6IGFkZCBhbGwgZmlsZXMgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHJldHVybmVkIGluIFJlc3BvbnNlCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlRpY2tldEF0dGFjaG1lbnRzKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNGaWxlVXBsb2FkJywgcGFyZW50LmRvY3VtZW50KS5iZWZvcmUoCiAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+JyArIHRoaXMuRmlsZW5hbWUgKyAnICgnICsgdGhpcy5GaWxlc2l6ZSArICcpPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJBdHRhY2htZW50RGVsZXRlJyArIHRoaXMuRmlsZUlEICsgJyIgbmFtZT0iQXR0YWNobWVudERlbGV0ZScgKyB0aGlzLkZpbGVJRCArICciIHZhbHVlPSJEZWxldGUiIGNsYXNzPSJTcGFjaW5nTGVmdCI+JyArIFJlc3BvbnNlLkxvY2FsaXphdGlvbi5EZWxldGUgKyAnPC9idXR0b24+PC9saT4nCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIFNldERhdGEoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2pzb24nCiAgICAgICAgKTsKICAgIH07CiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlRpY2tldENvbXBvc2UgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkN1c3RvbWVyID0gRkFRLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkN1c3RvbWVyLlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5DdXN0b21lci5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIEZBUS5DdXN0b21lci5GQVFab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgZGVmYXVsdCBjb25maWcgc2V0dGluZy4KICAgICAqLwogICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICAvLyBzbGlnaHRseSBjaGFuZ2UgdGhlIHdpZHRoIG9mIHRoZSBpZnJhbWUgdG8gbm90IGJlIGV4YWN0bHkgMTAwJSB3aWR0aCBhbnltb3JlCiAgICAgICAgICAgIC8vIHRoaXMgcHJldmVudHMgYSBkb3VibGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgKGZyb20gaWZyYW1lIGFuZCBzdXJyb3VuZGluZyBkaXYpCiAgICAgICAgICAgICRJZnJhbWUud2lkdGgoJElmcmFtZS53aWR0aCgpIC0gMik7CgogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwoKICAgICAgICAgICAgLy8gaWYgdGhlIGlGcmFtZXMgaGVpZ2h0IGlzIDAsIHdlIGNvbGxhcHNlIHRoZSB3aWRnZXQKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgICAgJElmcmFtZS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykucmVtb3ZlQ2xhc3MoJ0V4cGFuZGVkJykuYWRkQ2xhc3MoJ0NvbGxhcHNlZCcpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFOZXdIZWlnaHQgfHwgaXNOYU4oTmV3SGVpZ2h0KSkgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JykpIHsKICAgICAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBwYXJzZUludChOZXdIZWlnaHQsIDEwKSArIDI1OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBtZW1iZXJvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbQogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRNZXNzYWdlIC0gYW4gRkFRIGZpZWxkLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBjbGFzcyBvZiBhIEZBUSBmaWVsZDoKICAgICAqICAgICAgdXNlciBjYWxscyB0aGlzIGZ1bmN0aW9uIGJ5IGNsaWNraW5nIG9uIHRoZSBmaWVsZCBoZWFkLCBmaWVsZCBnZXRzIGhpZGRlbiBieSByZW1vdmluZwogICAgICogICAgICB0aGUgY2xhc3MgJ1Zpc2libGUnLiBJZiB0aGUgZmllbGQgaGVhZCBpcyBjbGlja2VkIHdoaWxlIGl0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNsYXNzCiAgICAgKiAgICAgICdWaXNpYmxlJywgdGhlIGZpZWxkIGdldHMgdGhlIGNsYXNzICdWaXNpYmxlJyBhZ2FpbiBhbmQgaXQgd2lsbCBiZSBzaG93bi4KICAgICAqLwogICAgZnVuY3Rpb24gVG9nZ2xlTWVzc2FnZSgkTWVzc2FnZSl7CiAgICAgICAgaWYgKCRNZXNzYWdlLmhhc0NsYXNzKCdWaXNpYmxlJykpIHsKICAgICAgICAgICAgJE1lc3NhZ2UucmVtb3ZlQ2xhc3MoJ1Zpc2libGUnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRNZXNzYWdlLmFkZENsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAbWVtYmVyb2YgRkFRLkN1c3RvbWVyLkZBUVpvb20KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGJpbmRzIGZ1bmN0aW9ucyB0byB0aGUgJ01lc3NhZ2VIZWFkZXInCiAgICAgKiAgICAgIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgTWVzc2FnZUJvZHkgYW5kIHRoZSByZXBseSBmb3JtLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKXsKICAgICAgICB2YXIgJE1lc3NhZ2VzID0gJCgnI01lc3NhZ2VzID4gbGknKSwKICAgICAgICAgICAgJE1lc3NhZ2VIZWFkZXJzID0gJCgnLk1lc3NhZ2VIZWFkZXInLCAkTWVzc2FnZXMpOwoKICAgICAgICAkTWVzc2FnZUhlYWRlcnMuY2xpY2soZnVuY3Rpb24oRXZlbnQpewogICAgICAgICAgICBUb2dnbGVNZXNzYWdlKCQodGhpcykucGFyZW50KCkpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBpbml0IGJyb3dzZXIgbGluayBtZXNzYWdlIGNsb3NlIGJ1dHRvbgogICAgICAgIGlmICgkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb246ICdDdXN0b21lckZBUVpvb20nLAogICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0Jyb3dzZXJMaW5rTWVzc2FnZScKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyJykuZmFkZU91dCgic2xvdyIpOwoKICAgICAgICAgICAgICAgIC8vIGNhbGwgc2VydmVyLCB0byBzYXZlIHRoYXQgdGhlIGJ1dHRvbiB3YXMgY2xvc2VkIGFuZCBkbyBub3Qgc2hvdyBpdCBhZ2FpbiBvbiByZWxvYWQKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgICAgICAgICAgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwKICAgICAgICAgICAgICAgICAgICBEYXRhLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkN1c3RvbWVyLkZBUVpvb20gfHwge30pKTsK
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uIEFydGljbGVMaXN0IEV4cGFuZGluZwogKi8KCi5GQVEgLk92ZXJ2aWV3Q29udHJvbCBkaXYgewogICAgcGFkZGluZzogMHB4Owp9CgouRkFRICNPdmVydmlld0JvZHkgewogICAgbWFyZ2luOiAwIDAgOHB4IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBMYXJnZSBTaWRlYmFyQ29sdW1uCiAqLwoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uLkxhcmdlIHsKICAgIHdpZHRoOiAzNTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTWVkaXVtIHsKICAgIHdpZHRoOiAyOTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRTWluaUxpc3QKICovCgp1bC5GQVFNaW5pTGlzdCBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgppZnJhbWUuVGV4dE9wdGlvbi5GQVEgewogICAgd2lkdGg6IDkwMHB4OwogICAgbWluLWhlaWdodDogNjAwcHg7Cn0KCmlmcmFtZS5GQVFGaWVsZCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGZyYW1lYm9yZGVyOiAwOwp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gZGl2LkZpZWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAyNCUgIWltcG9ydGFudDsKfQoKZmllbGRzZXQuVGFibGVTbWFsbCA+IGxhYmVsIHsKICAgIHdpZHRoOiAyNCUgIWltcG9ydGFudDsKfQoKZmllbGRzZXQuVGFibGVTbWFsbCA+IGRpdi5GQVFEaXZpZGVyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDQ0NDOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRyLkludmFsaWQgewogICAgY29sb3I6ICNDQ0M7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgQXJ0aWNsZSB0YWJsZSBib2R5CiAqLwoKLkFydGljbGVGQVFDb250ZW50IHsKICAgIHBhZGRpbmc6IDExcHggMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgcC5DZW50ZXIgewogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBtYXJnaW46IDBweCA1MHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gLkNhbGxGb3JBY3Rpb24gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDEwcHggYXV0byAwcHggYXV0bzsKfQoKLkFydGljbGVGQVFDb250ZW50IC5GQVFWb3RlRm9ybSAuQ2FsbEZvckFjdGlvbi5IaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKfQoKLkZBUVN0YXRlTmFtZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTBweDsKICAgIHRvcDogN3B4OwogICAgZm9udC1zaXplOiA4MCU7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmZpZWxkc2V0IC5GQVFTdGF0ZU5hbWUgewogICAgcG9zaXRpb246IHN0YXRpYzsKfQoKLlJhdGVCdXR0b25zIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLlJhdGVCdXR0b25zID4gbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLlJhdGVCdXR0b25zID4gbGk6Zmlyc3QtY2hpbGQsCi5SYXRlQnV0dG9ucyA+IGxpOmxhc3QtY2hpbGQgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5WaXNpYmxlLVNjcmVlblMgLlJhdGVCdXR0b25zID4gbGkgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgouVmlzaWJsZS1TY3JlZW5TIC5SYXRlQnV0dG9ucyA+IGxpIHNwYW4gewogICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5SYXRlQnV0dG9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAzMHB4OwogICAgd2lkdGg6IDI1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogbGVmdDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouUmF0ZUJ1dHRvbiBpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogIzk5OTsKfQoKLlJhdGVCdXR0b24gaS5mYS1zdGFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuZmEtc3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjRTk3RDM0Owp9CgouUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCBpLmZhLXN0YXItbyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouUmF0ZUJ1dHRvbjpob3ZlciBpLmZhLXN0YXItbyB7CiAgICBjb2xvcjogIzAwMDsKfQoKLlJhdGVTdGFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNnB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDFweDsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICB0ZXh0LWluZGVudDo1cHg7Cn0KCi5SYXRlTGFiZWxCZWZvcmUsCi5SYXRlTGFiZWxBZnRlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKfQoKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KCi5ab29tU21hbGxCdXR0b257CiAgICBtYXJnaW4tbGVmdDogMTJweDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBwIHsKICAgICBwYWRkaW5nOiA1cHggMjBweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4OwogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBhLkNsb3NlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogNHB4OwogICAgdG9wOiA2cHg7CiAgICBjb2xvcjogIzVENUQ1RDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2U6aG92ZXIgewogICAgY29sb3I6ICMwMDA7Cn0KfQo=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmJJREFUeNqkU0toE1EUPZkk84n5GMnHfrRBKRS0xCK21SKE1IUVV7oWgxa7KW6kkK2LghhdiBuDRURxIa6lOwlCjSgBJbhKhSjakibSTP7J/HzvTTMYcNcHZ97Mvfec9+7hjs0wDOxnOegjdmMDbrcHPt9BiKIU4ThuiYQXCMb36goE67qupzuddlGWq2g06sg8mzMF+osUJDh0U7Epd+Ds5AEMB830VlmNZvPNaCbXXiQ1KyT0fOAGfbLk7KST18f4yBAPszWN5Y6GbRg77MHsSSGwuvYjLes6+iJMQFGUiK62UsnEcX40yNFvXLj1aaDXh3cmcGrCh2RihL99L58iNRkSLnI0Wa83luanfYHRkJ2RVVXFtctDDOenvKjVavj4dYflaE38jC9AOZTLBNrtzsL8bIgVaJrGcDXux8UZHkFvl+ZRKu2gUChgc/M7Zk6IjGO1oOvceGTYRfYeO12Wa2i12vj8rYEnb7YxPRnCzStHiPMNUGvCfjvjWAIOhwsw6E26hFynhsJud+L+iypsNgmry8fQbDZJHc/8MMjFGacvIIreQuFnK3rI1SNEnsA0LvvqHNsrlV04naJl6K+yybE8kCT/+vucQocIPC9YuLT8m+HfmCCIyOZNjiUgCJ50JmerlGUqILHTKETRx9D/ptj+I+BD3lmhHEuA9FvsqeLKg5dqr7QrsEKHQ8Tbx2EG+k5jW4T86DV6tJZyBiaRTla5auDu004qdpoPzEWdGDGYY6RnDhtfFGRySqXVMQZG2UZHNr5YYubtrQjBf38mAnptdrKm9fBuLWwK7Gf9FWAAFbMKX7AnppcAAAAASUVORK5CYII=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uICBMYXlvdXRGaXhlZFNpZGViYXIKICovCgojRm9vdGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgcGFkZGluZy10b3A6IDIwcHg7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgPiAuQ29udGVudENvbHVtbiB7CiAgICAvKioKICAgICAqIEBub3RlICAgIGZvcmNlIG93biBCbG9jayBGb3JtYXR0aW5nIENvbnRleHQgZm9yIG5lc3RlZCBmbG9hdHMKICAgICAqLwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhciA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouUlRMIC5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJGaXJzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5SVEwgLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyRmlyc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDMwMHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgQ3VzdG9tZXIgV2lkZ2V0U2ltcGxlCiAqLwoKLldpZGdldFNpbXBsZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTlFOUU5OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogYXV0bzsKICAgIHotaW5kZXg6IDEwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLldpZGdldFNpbXBsZSAuSGVhZGVyIHsKICAgIHBhZGRpbmc6IDVweCA4cHggM3B4OwogICAgY29sb3I6ICMyMjI7CiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkQ2RDY7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmbG9hdDogbGVmdDsKfQoKLlJUTCAuV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgc3BhbiB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgouV2lkZ2V0U2ltcGxlIC5Db250ZW50IHsKICAgIGhlaWdodDogYXV0bzsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nOiAxM3B4IDhweDsKICAgIGJhY2tncm91bmQ6ICNGRkY7CiAgICBib3JkZXI6IDAgbm9uZTsKfQoKLldpZGdldFNpbXBsZSAuUGFnaW5hdGlvbiB7CiAgICBmb250LXNpemU6IDExcHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBGQVFIZWFkZXIKICovCgouRkFRSGVhZGVyIGgyIHsKICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7Cn0KLlJUTCAuRkFRSGVhZGVyIGgyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIE92ZXJ2aWV3CiAqLwoKLk92ZXJ2aWV3IHRoZWFkIHsKICAgIGJhY2tncm91bmQ6ICNjY2NjY2M7CiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7Cn0KCi5PdmVydmlldyB0aGVhZCB0aCB7CiAgICBjb2xvcjogIzRCNEI0QjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JCQjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNDQ0M7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIEZBUU1pbmlMaXN0CiAqLwoKdWwuRkFRTWluaUxpc3Qgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAwcHg7CiAgICBtYXJnaW46IDdweDsKfQoKfQo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkFydGljbGVGQVFDb250ZW50IHsKICAgIHBhZGRpbmc6IDExcHggMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5SYXRlQnV0dG9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAzMHB4OwogICAgd2lkdGg6IDI1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogbGVmdDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouUlRMIC5SYXRlQnV0dG9uIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVCdXR0b24gaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICM5OTk7Cn0KCi5SYXRlQnV0dG9uIGkuZmEtc3RhciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCBpLmZhLXN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogI0U5N0QzNDsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5mYS1zdGFyLW8gewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b246aG92ZXIgaS5mYS1zdGFyLW8gewogICAgY29sb3I6ICMwMDA7Cn0KCi5SYXRlU3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxcHg7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCi5SVEwgLlJhdGVTdGFyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICBtYXJnaW4tbGVmdDogNnB4Owp9CgouUlRMIC5SYXRlU3RhclRleHQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5SVEwgLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5SYXRlTGFiZWxBZnRlciB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJUTCAuUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiA2NXB4Owp9CgouUmF0aW5nTGFiZWwgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCi5SVEwgLlJhdGluZ0xhYmVsIHsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmctbGVmdDogMnB4Cn0KCi5TcGFjaW5nVG9wIHsKICAgIG1hcmdpbi10b3A6IDEzcHg7Cn0KCi5TcGFjaW5nVG9wTGFyZ2UgewogICAgbWFyZ2luLXRvcDogMjZweDsKfQoKLlJUTCAuVm90aW5nQ29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlZvdGluZ1F1ZXN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OjEwcHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlZvdGluZ0JveCB7CiAgICBtaW4td2lkdGg6IDIwcGM7CiAgICBtYXJnaW46IDAgMzBweCAyMXB4OwogICAgY29sb3I6ICM2QTZBNkE7CiAgICBiYWNrZ3JvdW5kOiAjRjlGOUY5OwogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRDZENkQ2OwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0Q2RDZENjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDZENkQ2Owp9CgouVm90aW5nQm94ID4gI01lc3NlbmdlciB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0VFRTsKfQoKLlJTU0ljb24gewogICAgZmxvYXQ6IHJpZ2h0OwogICAgaGVpZ2h0OiAxNnB4OwogICAgd2lkdGg6IDI4cHg7Cn0KCi5Eb3dubG9hZEF0dGFjaG1lbnQgYSwKLktleXdvcmQgYSB7CiAgICBjb2xvcjogI0ZGOTkyMjsKfQoKLkRvd25sb2FkQXR0YWNobWVudCBhOmhvdmVyLAouS2V5d29yZCBhOmhvdmVyIHsKICAgIGNvbG9yOiAjRkY3NzIyOwp9CgouVm90aW5nQWN0aW9uUm93IHsKICAgIGhlaWdodDogMjNweDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBwIHsKICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgIHBhZGRpbmc6IDVweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOwogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiA0cHg7CiAgICB0b3A6IDZweDsKICAgIGNvbG9yOiAjNUQ1RDVEOwp9CgouRkFRTWVzc2FnZUJyb3dzZXIgYS5DbG9zZTpob3ZlciB7CiAgICBjb2xvcjogIzAwMDsKfQp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgojRkFRUmVsYXRlZEFydGljbGVzLkhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgIHdpZHRoOiAzMDBweDsKICAgIHBhZGRpbmc6IDA7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSB7CiAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSAuSGVhZGVyIGgzIHsKICAgIGhlaWdodDogMTZweDsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuV2lkZ2V0U2ltcGxlIC5Db250ZW50IHsKICAgIHBhZGRpbmc6IDA7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSAuSGludCB7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBjb2xvcjogIzY2NjY2NjsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB1bC5GQVFNaW5pTGlzdCBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERERERDsKICAgIHBhZGRpbmc6IDVweCA4cHg7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgdWwuRkFRTWluaUxpc3QgbGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgICBib3JkZXItYm90dG9tOiAwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIHVsLkZBUU1pbmlMaXN0IHNwYW4gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFdpZGdldHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgV2lkZ2V0Qm94CiAqLwoKLkNhbGxGb3JBY3Rpb24gewogICAgcGFkZGluZzogMHB4OwogICAgYmFja2dyb3VuZDogI2VlZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JiYjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCBlYXNlLWluIDAuMnM7Cn0KCi8qKgogKiBAY3NzLWZvciAgICAgRmlyZWZveAogKiBAbm90ZSAgICAgICAgYnVnOiBidXR0b24gY29udGFpbmluZyBhbiBlbGVtZW50IGhhcyBhbiBoaWRkZW4gcGFkZGluZwogKi8KCi5DYWxsRm9yQWN0aW9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5DYWxsRm9yQWN0aW9uOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5Owp9CgouQ2FsbEZvckFjdGlvbiBzcGFuIHsKICAgIGhlaWdodDogMTJweDsKICAgIHBhZGRpbmc6IDNweCA3cHggNnB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6ICMzMzM7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRkZGOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLkNhbGxGb3JBY3Rpb24gc3BhbiBpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGxlZnQ6IDBweDsKICAgIHRvcDogMXB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgd2lkdGg6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5DYWxsRm9yQWN0aW9uOmFjdGl2ZSwKLkNhbGxGb3JBY3Rpb246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKICAgIGJvcmRlci1jb2xvcjogIzk5OTsKfQoKLlNlYXJjaEJveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5TZWFyY2hCb3ggaW5wdXRbdHlwZT0ndGV4dCddIHsKICAgIGhlaWdodDogMTVweDsKICAgIG1hcmdpbjogMHB4OwogICAgcGFkZGluZzogNHB4IDVweDsKICAgIGZvbnQ6IG5vcm1hbCAxMnB4LzE1cHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJvcmRlci1jb2xvcjogIzk5OTsKICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CiAgICB3aWR0aDogMTNwYzsKfQoKLkludmlzaWJsZVRleHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgd2lkdGg6IDA7Cn0KCi5SVEwgLlNlYXJjaEJveCBpbnB1dFt0eXBlPSd0ZXh0J117CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5OTk7CiAgICB3aWR0aDogMTNwYzsKfQoKLlNlYXJjaEJveCBpbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLlJUTCAuU2VhcmNoQm94IGlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgIGJvcmRlci1sZWZ0OiBub25lOwp9CgouU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgMCAwIC00cHg7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweDsKICAgIGNvbG9yOiAjMzMzOwogICAgZm9udDogYm9sZCAxMHB4LzEzcHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJhY2tncm91bmQ6ICNFRUU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKLlJUTCAuU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgLTRweCAwIDA7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgYm9yZGVyOiAxcHggc29saWQgIzg4ODsKfQoKLlNlYXJjaEJveCBidXR0b246aG92ZXIsCi5TZWFyY2hCb3ggYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNWU1ZTU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHBhY2thZ2UgICAgIEZBUSAtIFNraW4gIkRlZmF1bHQiCiAqIEBzZWN0aW9uICAgICBGQVFab29tCiAqLwoKLyoqCiAqIEBzZWN0aW9uICAgICBIZWFkZXIKICovCgouRkFRSGVhZGVyIHsKICAgIHdpZHRoOiA4MCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouRkFRSGVhZGVyIGgyIHsKICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7Cn0KLlJUTCAuRkFRSGVhZGVyIGgyIHsKICAgIHBhZGRpbmc6IDAgMzZweCAwIDA7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5GQVFIZWFkZXIgLkZBUUhvb2sgewogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCi5NZXNzYWdlQm9keSB7CiAgICBwYWRkaW5nOiAwcHggMTVweDsKfQoKI0ZBUU9wdGlvbnMgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDEwcHg7Cn0KCiNGQVFPcHRpb25zIGxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDVweDsKfQoKI0ZBUU9wdGlvbnMgLlByaW50IHsKICAgIGNvbG9yOiAjNzc3OwogICAgZm9udC1zaXplOiAxNXB4Owp9CiNGQVFPcHRpb25zIC5QcmludDpob3ZlciB7CiAgICBjb2xvcjogI2Y5MjsKfQojRkFRT3B0aW9ucyAuUHJpbnQgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgpsaS5LZXl3b3Jkc0NvbnRhaW5lciB7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCmRpdi5BdHRhY2htZW50cyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgY2VudGVyIHRyYW5zcGFyZW50OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4OwogICAgY29sb3I6ICNBQUFBQUE7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMCAzcHg7CiAgICB3aWR0aDogMTBweDsKfQoKLlJUTCAuQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIHRleHQtYWxpZ246cmlnaHQ7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5BdHRhY2htZW50cyBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouQXR0YWNobWVudHMgLkRvd25sb2FkQXR0YWNobWVudCB7CiAgICBtYXJnaW4tbGVmdDogMnB4Owp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgpGQVEucG0gLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvZGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgcmVidWlsZCBaWloqIGZpbGVzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPldyaXRlRGVmYXVsdCgpOwoKICAgICMgZGVmaW5lIHRoZSBaWlogZmlsZXMKICAgIG15IEBaWlpGaWxlcyA9ICgKICAgICAgICAnWlpaQUF1dG8ucG0nLAogICAgICAgICdaWlpBdXRvLnBtJywKICAgICk7CgogICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcyAobW9kX3Blcmwgd29ya2Fyb3VuZCkKICAgIGZvciBteSAkWlpaRmlsZSAoQFpaWkZpbGVzKSB7CgogICAgICAgIFBSRUZJWDoKICAgICAgICBmb3IgbXkgJFByZWZpeCAoQElOQykgewogICAgICAgICAgICBteSAkRmlsZSA9ICRQcmVmaXggLiAnL0tlcm5lbC9Db25maWcvRmlsZXMvJyAuICRaWlpGaWxlOwogICAgICAgICAgICBuZXh0IFBSRUZJWCBpZiAhLWYgJEZpbGU7CiAgICAgICAgICAgIGRvICRGaWxlOwogICAgICAgICAgICBsYXN0IFBSRUZJWDsKICAgICAgICB9CiAgICB9CgogICAgIyBhbHdheXMgZGlzY2FyZCB0aGUgY29uZmlnIG9iamVjdCBiZWZvcmUgcGFja2FnZSBjb2RlIGlzIGV4ZWN1dGVkLAogICAgIyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY29uZmlnIG9iamVjdCB3aWxsIGJlIGNyZWF0ZWQgbmV3bHksIHNvIHRoYXQgaXQKICAgICMgd2lsbCB1c2UgdGhlIHJlY2VudGx5IHdyaXR0ZW4gbmV3IGNvbmZpZyBmcm9tIHRoZSBwYWNrYWdlCiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoCiAgICAgICAgT2JqZWN0cyA9PiBbJ0tlcm5lbDo6Q29uZmlnJ10sCiAgICApOwoKICAgICMgdGhlIHN0YXRzIG9iamVjdCBuZWVkcyBhIFVzZXJJRCBwYXJhbWV0ZXIgZm9yIHRoZSBjb25zdHJ1Y3RvcgogICAgIyB3ZSBuZWVkIHRvIGRpc2NhcmQgYW55IGV4aXN0aW5nIHN0YXRzIG9iamVjdCBiZWZvcmUKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RzRGlzY2FyZCgKICAgICAgICBPYmplY3RzID0+IFsnS2VybmVsOjpTeXN0ZW06OlN0YXRzJ10sCiAgICApOwoKICAgICMgZGVmaW5lIFVzZXJJRCBwYXJhbWV0ZXIgZm9yIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgc3RhdHMgb2JqZWN0CiAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycgPT4gewogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGRlZmluZSBmaWxlIHByZWZpeAogICAgJFNlbGYtPntGaWxlUHJlZml4fSA9ICdGQVEnOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBGQVEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgYWRkIHRoZSBncm91cCBGQVEKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBkYXRhYmFzZSB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hZG1pbicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhZG1pbiB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhcHByb3ZhbCB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBGQVEgZ3JvdXBzIHRvIHRoZSBjYXRlZ29yeSAnTWlzYycKICAgICRTZWxmLT5fQ2F0ZWdvcnlHcm91cFNldCgKICAgICAgICBDYXRlZ29yeSA9PiAnTWlzYycsCiAgICAgICAgR3JvdXBzICAgPT4gWyAnZmFxJywgJ2ZhcV9hZG1pbicsICdmYXFfYXBwcm92YWwnIF0sCiAgICApOwoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgRkFRIGxhbmd1YWdlcwogICAgJFNlbGYtPl9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBGQVEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgYWRkIHRoZSBncm91cCBGQVEKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBkYXRhYmFzZSB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYWRtaW4KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hZG1pbicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhZG1pbiB1c2VycycsCiAgICApOwoKICAgICMgYWRkIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ2ZhcSBhcHByb3ZhbCB1c2VycycsCiAgICApOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzCiAgICAkU2VsZi0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKICAgICMgZGVsZXRlIHRoZSBGQVEgY2FjaGUgKHRvIGF2b2lkIG9sZCBkYXRhIGZyb20gcHJldmlvdXMgRkFRIG1vZHVsZXMpCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGVTcGVjaWFsKCkKCnJ1biBzcGVjaWFsIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZVNwZWNpYWwoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZVNwZWNpYWwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNvbnZlcnQgXG4gdG8gPGJyPiBmb3IgZXhpc3RpbmcgYXJ0aWNsZXMKICAgICRTZWxmLT5fQ29udmVydE5ld2xpbmVzKCk7CgogICAgIyBzdGFydCBub3JtYWwgY29kZSB1cGdyYWRlCiAgICAkU2VsZi0+Q29kZVVwZ3JhZGUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiA0LjAuMS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xIHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbWlncmF0ZSB0aGUgRFRMIENvbnRlbnQgaW4gdGhlIFN5c0NvbmZpZwogICAgJFNlbGYtPl9NaWdyYXRlRFRMSW5TeXNDb25maWcoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KICAgICRTZWxmLT5fTWlncmF0ZUNvbmZpZ3MoKTsKCiAgICAjIHNldCBjb250ZW50IHR5cGUKICAgICRTZWxmLT5fU2V0Q29udGVudFR5cGUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZW1vdmUgRHluYW1pYyBGaWVsZHMgYW5kIGl0cyB2YWx1ZXMKICAgICRTZWxmLT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgRkFRCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXEnLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgdGhlIGdyb3VwIGZhcV9hZG1pbgogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxX2FkbWluJywKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIHRoZSBncm91cCBmYXFfYXBwcm92YWwKICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcV9hcHByb3ZhbCcsCiAgICApOwoKICAgICMgdW5pbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNVbmluc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGxpbmtzIHdpdGggRkFRIGFydGljbGVzCiAgICAkU2VsZi0+X0xpbmtEZWxldGUoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0luc2VydEZBUVN0YXRlcygpCgppbnNlcnRzIG5lZWRlZCBGQVEgc3RhdGVzIGludG8gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCj1jdXQKCnN1YiBfSW5zZXJ0RkFRU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgZmFxX3N0YXRlX3R5cGVzID0+IGZhcV9zdGF0ZXMKICAgIG15ICVTdGF0ZSA9ICgKICAgICAgICAnaW50ZXJuYWwnID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAnZXh0ZXJuYWwnID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAncHVibGljJyAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlU3RhdGUgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFN0YXRlVHlwZVJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgc3RhdGUKICAgICAgICAkRkFRT2JqZWN0LT5TdGF0ZUFkZCgKICAgICAgICAgICAgTmFtZSAgID0+ICRTdGF0ZXskVHlwZX0sCiAgICAgICAgICAgIFR5cGVJRCA9PiAkU3RhdGVUeXBlUmVmLT57U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Db252ZXJ0TmV3bGluZXMoKQoKY292ZXJ0cyBhbGwgXG4gaW50byA8YnI+IGZvciBGaWVsZHMgMS02IGluIGFsbCBleGlzdGluZyBGQVEgYXJ0aWNsZXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Db252ZXJ0TmV3bGluZXMoKTsKCj1jdXQKCnN1YiBfQ29udmVydE5ld2xpbmVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBvbmx5IGNvbnZlcnQgXG4gdG8gPGJyPiBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIEZBUSBJRHMKICAgIG15IEBGQVFJRHM7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBmYXFfaXRlbSIsCiAgICApOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQEZBUUlEcywgJFJvd1swXSApOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEZBUUlEcykgewoKICAgICAgICAjIGdldCBGQVEgZGF0YQogICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIGFydGljbGUgZmllbGRzIDEtNgogICAgICAgIG15ICRGb3VuZE5ld2xpbmU7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5IChxdyAoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICEkRkFReyRLZXl9OwoKICAgICAgICAgICAgIyByZXBsYWNlIFxuIHdpdGggPGJyPgogICAgICAgICAgICAkRkFReyRLZXl9ID1+IHMvXG4vPGJyXC8+XG4vZzsKCiAgICAgICAgICAgICRGb3VuZE5ld2xpbmUgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IElEIGlmICEkRm91bmROZXdsaW5lOwoKICAgICAgICAjIHVwZGF0ZSBGQVEgZGF0YQogICAgICAgICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICAgICAgJUZBUSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0dyb3VwQWRkKCkKCmFkZCBhIGdyb3VwCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RoZS1ncm91cC1uYW1lJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnVGhlIGdyb3VwIGRlc2NyaXB0aW9uLicsCiAgICApOwoKPWN1dAoKc3ViIF9Hcm91cEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIERlc2NyaXB0aW9uKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgZ3JvdXAgb2JqZWN0CiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBncm91cHMKICAgIG15ICVHcm91cExpc3QgPSAkR3JvdXBPYmplY3QtPkdyb3VwTGlzdCgpOwoKICAgICMgcmV2ZXJzZSB0aGUgZ3JvdXAgbGlzdCBmb3IgZWFzaWVyIGxvb2t1cAogICAgbXkgJUdyb3VwTGlzdFJldmVyc2UgPSByZXZlcnNlICVHcm91cExpc3Q7CgogICAgIyBjaGVjayBpZiBncm91cCBhbHJlYWR5IGV4aXN0cwogICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBMaXN0UmV2ZXJzZXsgJFBhcmFte05hbWV9IH07CgogICAgIyByZWFjdGl2YXRlIHRoZSBncm91cAogICAgaWYgKCRHcm91cElEKSB7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgICAgIG15ICVHcm91cERhdGEgPSAkR3JvdXBPYmplY3QtPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRHcm91cE9iamVjdC0+R3JvdXBVcGRhdGUoCiAgICAgICAgICAgICVHcm91cERhdGEsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBhZGQgdGhlIGdyb3VwCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gaWYgISRHcm91cE9iamVjdC0+R3JvdXBBZGQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBDb21tZW50ID0+ICRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGxvb2t1cCB0aGUgbmV3IGdyb3VwIGlkCiAgICBteSAkTmV3R3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckFkZCgKICAgICAgICBHSUQgICAgICAgID0+ICROZXdHcm91cElELAogICAgICAgIFVJRCAgICAgICAgPT4gMSwKICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgcm8gICAgICAgID0+IDEsCiAgICAgICAgICAgIG1vdmVfaW50byA9PiAxLAogICAgICAgICAgICBjcmVhdGUgICAgPT4gMSwKICAgICAgICAgICAgb3duZXIgICAgID0+IDEsCiAgICAgICAgICAgIHByaW9yaXR5ICA9PiAxLAogICAgICAgICAgICBydyAgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBncm91cCBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHcm91cElEOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgbXkgJUdyb3VwRGF0YSA9ICRHcm91cE9iamVjdC0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRHcm91cE9iamVjdC0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9MaW5rRGVsZXRlKCkKCmRlbGV0ZSBhbGwgZXhpc3RpbmcgbGlua3MgdG8gRkFRIGFydGljbGVzCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTGlua0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbGwgRkFRIGFydGljbGUgaWRzCiAgICBteSBARkFRSURzID0gKCk7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfaXRlbScKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBGQVFJRHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gaWYgIUBGQVFJRHM7CgogICAgIyBkZWxldGUgdGhlIEZBUSBhcnRpY2xlIGxpbmtzCiAgICBmb3IgbXkgJEZBUUlEIChARkFRSURzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEZBUUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCkKCmNyZWF0ZXMgYWRkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzIGZvciBzeXN0ZW0gZGVmYXVsdCBsYW5ndWFnZSBhbmQgdXNlciBsYW5ndWFnZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKPWN1dAoKc3ViIF9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzeXN0ZW0gZGVmYXVsdCBsYW5ndWFnZQogICAgbXkgJExhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEZWZhdWx0TGFuZ3VhZ2UnKTsKICAgIGlmICgkTGFuZ3VhZ2UpIHsKCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgRkFRIGxhbmd1YWdlcwogICAgICAgIG15ICVDdXJyZW50TGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHVzZSByZXZlcnNlIGhhc2ggZm9yIGVhc3kgbG9va3VwCiAgICAgICAgbXkgJVJldmVyc2VMYW5ndWFnZXMgPSByZXZlcnNlICVDdXJyZW50TGFuZ3VhZ2VzOwoKICAgICAgICAjIGNoZWNrIGlmIGxhbmd1YWdlIGlzIGFscmVhZHkgZGVmaW5lZAogICAgICAgIGlmICggISRSZXZlcnNlTGFuZ3VhZ2VzeyRMYW5ndWFnZX0gKSB7CgogICAgICAgICAgICAjIGFkZCBsYW5ndWFnZQogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRMYW5ndWFnZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQ2F0ZWdvcnlHcm91cFNldCgpCgpBZGRzIHRoZSBnaXZlbiBncm91cCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gY2F0ZWdvcnkuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ2F0ZWdvcnlHcm91cFNldCgKICAgICAgICBDYXRlZ29yeSA9PiAnTWlzYycsCiAgICAgICAgR3JvdXBzICAgPT4gWyAnZmFxJywgJ2ZhcS1hZG1pbicsICdmYXFfYXBwcm92YWwnIF0sCiAgICApOwoKPWN1dAoKc3ViIF9DYXRlZ29yeUdyb3VwU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5IEdyb3VwcykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoIHJlZiAkUGFyYW17R3JvdXBzfSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiR3JvdXBzIG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMgYW5kIHRoZWlyIGlkcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgY3JlYXRlIGxvb2t1cCBoYXNoIGZvciB0aGUgY2F0ZWdvcnkgaWQKICAgIG15ICVGQVEySUQgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgIyBsb29rdXAgdGhlIGNhdGVnb3J5IGlkCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVEySUR7ICRQYXJhbXtDYXRlZ29yeX0gfTsKCiAgICAjIGxvb2t1cCB0aGUgZ3JvdXAgaWRzCiAgICBteSBAR3JvdXBJRHM7CiAgICBmb3IgbXkgJEdyb3VwICggQHsgJFBhcmFte0dyb3Vwc30gfSApIHsKICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJEdyb3VwLAogICAgICAgICk7CiAgICAgICAgcHVzaCBAR3JvdXBJRHMsICRHcm91cElEOwogICAgfQoKICAgICMgc2V0IGNhdGVnb3J5IGdyb3VwCiAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgR3JvdXBJRHMgICA9PiBcQEdyb3VwSURzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzRGVsZXRlKCkKCmRlbGV0ZSBhbGwgZXhpc3RpbmcgZHluYW1pYyBmaWVsZHMgZm9yIEZBUQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWxldGUoKTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScpOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIEZBUSBkeW5hbWljIGZpZWxkcyAodmFsaWQgYW5kIGludmFsaWQgb25lcykKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0ZBUSddLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgZHluYW1pYyBmaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CgogICAgICAgICMgZGVsZXRlIGFsbCBmaWVsZCB2YWx1ZXMKICAgICAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdC0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgICAgICBGaWVsZElEID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHZhbHVlcyBjb3VsZCBiZSBkZWxldGVkCiAgICAgICAgaWYgKCRWYWx1ZXNEZWxldGVTdWNjZXNzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSBmaWVsZAogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZERlbGV0ZSgKICAgICAgICAgICAgICAgIElEICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRlbGV0ZSBkeW5hbWljIGZpZWxkICckRHluYW1pY0ZpZWxkLT57TmFtZX0nISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHZhbHVlcyBjb3VsZCBub3QgYmUgZGVsZXRlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRlbGV0ZSB2YWx1ZXMgZm9yIGR5bmFtaWMgZmllbGQgJyREeW5hbWljRmllbGQtPntOYW1lfSchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTWlncmF0ZURUTEluU3lzQ29uZmlnIHsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFByb3ZpZGVyT2JqZWN0ICA9IEtlcm5lbDo6T3V0cHV0OjpUZW1wbGF0ZTo6UHJvdmlkZXItPm5ldygpOwoKICAgICMgZ2V0IHNldHRpbmcncyBjb250ZW50CiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwogICAgcmV0dXJuIGlmICEkU2V0dGluZzsKCiAgICBNRU5VTU9EVUxFOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICBTRVRUSU5HSVRFTToKICAgICAgICBmb3IgbXkgJFNldHRpbmdJdGVtICggc29ydCBrZXlzICV7ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9IH0gKSB7CgogICAgICAgICAgICBteSAkU2V0dGluZ0NvbnRlbnQgPSAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX07CgogICAgICAgICAgICAjIGRvIG5vdGhpbmcgbm8gdmFsdWUgZm9yIG1pZ3JhdGluZwogICAgICAgICAgICBuZXh0IFNFVFRJTkdJVEVNIGlmICEkU2V0dGluZ0NvbnRlbnQ7CgogICAgICAgICAgICBteSAkVFRDb250ZW50OwogICAgICAgICAgICBldmFsIHsKICAgICAgICAgICAgICAgICRUVENvbnRlbnQgPSAkUHJvdmlkZXJPYmplY3QtPk1pZ3JhdGVEVEx0b1RUKCBDb250ZW50ID0+ICRTZXR0aW5nQ29udGVudCApOwogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoJEApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRNZW51TW9kdWxlLT4kU2V0dGluZ0l0ZW0gOiAkQCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57JFNldHRpbmdJdGVtfSA9ICRUVENvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZXR0aW5nLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIG1pZ3JhdGUgRkFRIG1lbnUgbW9kdWxlcwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBGQVEgbWVudSBtb2R1bGVzCiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwoKICAgIE1FTlVNT0RVTEU6CiAgICBmb3IgbXkgJE1lbnVNb2R1bGUgKCBzb3J0IGtleXMgJXskU2V0dGluZ30gKSB7CgogICAgICAgICMgdXBkYXRlIG1vZHVsZSBsb2NhdGlvbgogICAgICAgIG15ICRNb2R1bGUgPSAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eydNb2R1bGUnfTsKICAgICAgICBpZiAoICRNb2R1bGUgIX4gbXtLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudShcdyspfSApIHsKICAgICAgICAgICAgbmV4dCBNRU5VTU9EVUxFOwogICAgICAgIH0KCiAgICAgICAgJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcsCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIycgLiAkTWVudU1vZHVsZSwKICAgICAgICAgICAgVmFsdWUgPT4gJFNldHRpbmctPnskTWVudU1vZHVsZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG1pZ3JhdGUgRkFRIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ3MgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkFnZW50RkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkN1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICczLUZBUVNlYXJjaCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJ0ZBUScsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bicsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICcwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpGQVEnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6VG9vbEJhck1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzkwLUZBUTo6QWdlbnRGQVFBZGQnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6VG9vbEJhcjo6TGluaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnIChAQ29uZmlncykgewoKICAgICAgICAjIGdldCBzZXR0aW5nIGNvbnRlbnQgZm9yIGhlYWRlciBtZXRhIEZBUSBzZWFyY2gKICAgICAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZy0+e05hbWV9ICk7CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkU2V0dGluZzsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnLT57Q29uZmlnSXRlbX07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkU2V0dGluZy0+eyRDb25maWdJdGVtfS0+eydNb2R1bGUnfTsKCiAgICAgICAgIyBzZXQgbW9kdWxlCiAgICAgICAgJFNldHRpbmctPnskQ29uZmlnSXRlbX0tPnsnTW9kdWxlJ30gPSAkQ29uZmlnLT57TW9kdWxlfTsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcsCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAkQ29uZmlnLT57TmFtZX0gLiAnIyMjJyAuICRDb25maWdJdGVtLAogICAgICAgICAgICBWYWx1ZSA9PiAkU2V0dGluZy0+eyRDb25maWdJdGVtfSwKICAgICAgICApOwoKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXRDb250ZW50VHlwZSB7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQ29udGVudFR5cGVTZXQoKTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdHJzX3N0YXRzPgo8Q2FjaGU+MDwvQ2FjaGU+CjxEZXNjcmlwdGlvbj5TaG93cyBhbiBvdmVydmlldyBvZiBGQVEgYXJ0aWNsZXMgaW4gYSBkZWZpbmVkIHRpbWUgcGVyaW9kIHNvcnRlZCBieSBhY2Nlc3MgbnVtYmVycy48L0Rlc2NyaXB0aW9uPgo8Rm9ybWF0PkNTVjwvRm9ybWF0Pgo8Rm9ybWF0PlByaW50PC9Gb3JtYXQ+CjxHcmFwaFNpemU+PC9HcmFwaFNpemU+CjxPYmplY3Q+PC9PYmplY3Q+CjxPYmplY3RNb2R1bGU+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5zdGF0czwvUGVybWlzc2lvbj4KPFN0YXRUeXBlPnN0YXRpYzwvU3RhdFR5cGU+CjxTdW1Db2w+MDwvU3VtQ29sPgo8U3VtUm93PjA8L1N1bVJvdz4KPFRpdGxlPkZBUSBhY2Nlc3Mgb3ZlcnZpZXc8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3Ryc19zdGF0cz4K
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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTA5LTIwVDE0OjEzOjEzWjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA5LTIwVDE0OjEzOjEzWjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMDktMjBUMTQ6MTM6MTNaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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dWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA5LjggMjU4LjQwOSA0NjYuNDIgMjY4LjM5OSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMSAwIG9iago8PCAvVVJJIChodHRwOi8vbG9jYWxob3N0L290cnMvaW5kZXgucGw/QWN0aW9uPUFkbWluRkFRRXhwbG9yZXI7Q2F0ZWdvcnk9TWlzYykKL1MgL1VSSSA+PgplbmRvYmoKMzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgOTYuNTYgMjM2Ljg2MSA0NTguMjYgMjQ2Ljg1MSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMyAwIG9iago8PCAvVVJJIChodHRwOi8vbG9jYWxob3N0L290cnMvaW5kZXgucGw/QWN0aW9uPUFkbWluRkFRRXhwbG9yZXI7Q2F0ZWdvcnk9TXklMjBDYXRlZ29yeSkKL1MgL1VSSSA+PgplbmRvYmoKMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxOTMuNzY1IDQ5OC44NCAyMDMuNzU1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeT1HcmFuUGFyZW50OjpQYXJlbnQ6OlNvbikKL1MgL1VSSSA+PgplbmRvYmoKMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxNzIuMjE3IDE4MS40NyAxODIuMjA3IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlw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dHlwZSAvTGluawovUmVjdCBbIDUyNS43NzkgNjc5LjYyOSA1MzkuOTk5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NjcuNjI5IDE1My44NTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY2Ny42MjkgNTM5Ljk5OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY1NS42MjkgMTgzLjczOSA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNjU1LjYyOSA1NDAuMjA4IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA2NDUuODE5IG51bGxdCj4+CmVuZG9iago3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NDMuNjI5IDIwMC45NTEgNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MiAwIFIKL0ggL0kKCj4+CmVuZG9iago3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY0My42MjkgNTM5Ljk5OCA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNTkwLjgzOCBudWxsXQo+PgplbmRvYmoKNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjMxLjYyOSAxNzkuMjEzIDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2MzEuNjI5IDUzOS45OTggNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NSAwIFIKL0ggL0kKCj4+CmVuZG9iago3OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDUzNS44NTcgbnVsbF0KPj4KZW5kb2JqCjc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxOS42MjkgMjA1LjU0NCA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjE5LjYyOSA1MzkuOTk4IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzggMCBSCi9IIC9JCgo+PgplbmRvYmoKODEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0ODAuODc2IG51bGxdCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MDcuNjI5IDI3Ny42MzcgNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYwNy42MjkgNTM5Ljk5OCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNDAxLjg5NSBudWxsXQo+PgplbmRvYmoKODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTk1LjYyOSAzNDUuMDU1IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjUxMSA1OTUuNjI5IDU0MC44NzEgNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDM0Ni45MTQgbnVsbF0KPj4KZW5kb2JqCjg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU4My42MjkgMTkyLjgxNSA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTgzLjYyOSA1MzkuOTk4IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAyOTEuOTMzIG51bGxdCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDI1Mi45NjggNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU3MS42MjkgNTM5Ljk5OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMjM2Ljk1MiBudWxsXQo+PgplbmRvYmoKOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTU5LjYyOSAxOTMuNzY3IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NTkuNjI5IDUzOS45OTggNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDE4MS45NzEgbnVsbF0KPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU0Ny42MjkgMjg3LjgyIDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTM0LjU2OCA1NDcuNjI5IDU0MC45MjggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDEyNi45OSBudWxsXQo+PgplbmRvYmoKMTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUzNS42MjkgMzY2LjI3OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDUzNS42MjkgNTQwLjM0OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTIzLjYyOSAzMTYuODk2IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUyMy42MjkgNTM5Ljk5OCA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDQgMCBSIC9YWVogNzIuMCA2NzIuMDUyIG51bGxdCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAyMTMuNTkgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTExLjYyOSA1MzkuOTk4IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDYzMC4zNzUgbnVsbF0KPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTkuNjI5IDI5NC43ODIgNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDk5LjYyOSA1MzkuOTk4IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDU3Ni42OTggbnVsbF0KPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODcuNjI5IDIyNS4wMDEgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDggNDg3LjYyOSA1NDAuMTY4IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDUyMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMyNC4xNDQgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDc1LjYyOSA1MzkuOTk4IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDEyNS42NjQgbnVsbF0KPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDM5MC4wMiA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NjMuNjI5IDUzOS45OTggNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMjQyLjQzNSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQzOS42MjkgMjA0Ljk3NiA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MzkuNjI5IDUzOS45OTggNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDE3My40MDggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDI3LjYyOSA1MzkuOTk4IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDE1LjYyOSAxNjQuOTEzIDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDQxNS42MjkgNTQwLjE2NyA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwMy42MjkgMjA5LjU1MiA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MDMuNjI5IDUzOS45OTggNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjEzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDIyMS43OTQgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzkxLjYyOSA1MzkuOTk4IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzNzkuNjI5IDE0OS4zOSAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNzkuNjI5IDUzOS45OTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUzIDAgUiAvWFlaIDcyLjAgNjQ0LjggbnVsbF0KPj4KZW5kb2JqCjE0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDE5OS4wMDYgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzY3LjYyOSA1MzkuOTk4IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDU2OC40IG51bGxdCj4+CmVuZG9iagoxNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAxOTQuNjQxIDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM1NS42MjkgNTM5Ljk5OCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzQzLjYyOSAxNjEuNzg0IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM0My42MjkgNTM5Ljk5OCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMTU3LjUxMSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMzEuNjI5IDUzOS45OTggMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNjQ1Ljk0NCBudWxsXQo+PgplbmRvYmoKMTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxOS42MjkgNDM5LjQwNSAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMTkuNjI5IDUzOS45OTggMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTgzLjIwMyBudWxsXQo+PgplbmRvYmoKMTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwNy42MjkgNDIzLjQzNCAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyAzMDcuNjI5IDU0MC4yMDcgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTIwLjQ2MiBudWxsXQo+PgplbmRvYmoKMTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI5NS42MjkgNDA1LjU5OCAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAyOTUuNjI5IDUzOS45OTggMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNDU3LjcyMSBudWxsXQo+PgplbmRvYmoKMTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4My42MjkgNDU3LjU4OSAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyODMuNjI5IDUzOS45OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgMzk0Ljk4IG51bGxdCj4+CmVuZG9iagoxNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjcxLjYyOSA0MTYuODkgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMjcxLjYyOSA1MzkuOTk4IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDMzMi4yMzkgbnVsbF0KPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTkuNjI5IDQxMS4zOTMgMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMjU5LjYyOSA1MzkuOTk4IDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDI2OS40OTggbnVsbF0KPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNDcuNjI5IDM4Ny43MDUgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMjQ3LjYyOSA1NDAuMzQ4IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDE3MC43NTcgbnVsbF0KPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMzUuNjI5IDM4Mi42OTYgMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMjM1LjYyOSA1NDAuMzQ4IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjIzLjYyOSAzMzMuMjEzIDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDIyMy42MjkgNTM5Ljk5OCAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA2NjQuNDQ0IG51bGxdCj4+CmVuZG9iagoxODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjExLjYyOSAyNzcuNzg3IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDIxMS42MjkgNTM5Ljk5OCAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA2MDMuMDIxIG51bGxdCj4+CmVuZG9iagoxODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTk5LjYyOSAyNjEuNzA0IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE5OS42MjkgNTM5Ljk5OCAyMDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA1NDEuNTk4IG51bGxdCj4+CmVuZG9iagoxODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTg3LjYyOSAyNjQuMTA0IDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE4Ny42MjkgNTM5Ljk5OCAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA0ODAuMTc1IG51bGxdCj4+CmVuZG9iagoxOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTc1LjYyOSAyNzUuNzA1IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE3NS42MjkgNTM5Ljk5OCAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA0MTguNzUyIG51bGxdCj4+CmVuZG9iagoxOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTYzLjYyOSAyODQuOTA4IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDE2My42MjkgNTQwLjM0OCAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAzNTcuMzI5IG51bGxdCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTUxLjYyOSAzMjMuOTA0IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDE1MS42MjkgNTQwLjM0OCAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAyOTUuOTA2IG51bGxdCj4+CmVuZG9iagoxOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTM5LjYyOSAyOTUuMjA1IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDEzOS42MjkgNTQwLjM0OCAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAyMzQuNDgzIG51bGxdCj4+CmVuZG9iagoyMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTI3LjYyOSAyOTguMzkxIDEzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDEyNy42MjkgNTQwLjM0OCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAxNzMuMDYgbnVsbF0KPj4KZW5kb2JqCjIwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMTUuNjI5IDI4NC4wNjIgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMTE1LjYyOSA1NDAuMzQ4IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDExMS42MzcgbnVsbF0KPj4KZW5kb2JqCjIwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDMuNjI5IDIzNS45MDQgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDggMTAzLjYyOSA1NDAuMTY4IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoyMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTEuNjI5IDM2My44OTQgMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggOTEuNjI5IDUzOS45OTggMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKMjE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDc5LjYyOSAyOTYuNDk4IDg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNzkuNjI5IDUz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Ugo3MCAwIFIKNzEgMCBSCjczIDAgUgo3NCAwIFIKNzYgMCBSCjc3IDAgUgo3OSAwIFIKODAgMCBSCjgyIDAgUgo4MyAwIFIKODUgMCBSCjg2IDAgUgo4OCAwIFIKODkgMCBSCjkxIDAgUgo5MiAwIFIKOTQgMCBSCjk1IDAgUgo5NyAwIFIKOTggMCBSCjEwMCAwIFIKMTAxIDAgUgoxMDMgMCBSCjEwNCAwIFIKMTA2IDAgUgoxMDcgMCBSCjEwOSAwIFIKMTEwIDAgUgoxMTIgMCBSCjExMyAwIFIKMTE1IDAgUgoxMTYgMCBSCjExOCAwIFIKMTE5IDAgUgoxMjAgMCBSCjEyMiAwIFIKMTI0IDAgUgoxMjUgMCBSCjEyNyAwIFIKMTI4IDAgUgoxMzAgMCBSCjEzMSAwIFIKMTMzIDAgUgoxMzQgMCBSCjEzNiAwIFIKMTM3IDAgUgoxMzkgMCBSCjE0MCAwIFIKMTQyIDAgUgoxNDMgMCBSCjE0NSAwIFIKMTQ2IDAgUgoxNDggMCBSCjE0OSAwIFIKMTUxIDAgUgoxNTIgMCBSCjE1NCAwIFIKMTU1IDAgUgoxNTcgMCBSCjE1OCAwIFIKMTYwIDAgUgoxNjEgMCBSCjE2MyAwIFIKMTY0IDAgUgoxNjYgMCBSCjE2NyAwIFIKMTY5IDAgUgoxNzAgMCBSCjE3MiAwIFIKMTczIDAgUgoxNzUgMCBSCjE3NiAwIFIKMTc4IDAgUgoxNzkgMCBSCjE4MSAwIFIKMTgyIDAgUgoxODQgMCBSCjE4NSAwIFIKMTg3IDAgUgoxODggMCBSCjE5MCAwIFIKMTkxIDAgUgoxOTMgMCBSCjE5NCAwIFIKMTk2IDAgUgoxOTcgMCBSCjE5OSAwIFIKMjAwIDAgUgoyMDIgMCBSCjIwMyAwIFIKMjA1IDAgUgoyMDYgMCBSCjIwOCAwIFIKMjA5IDAgUgoyMTEgMCBSCjIxMiAwIFIKMjE0IDAgUgoyMTUgMCBSCl0KZW5kb2JqCjIxOSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQog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MDA1IDI3OS40MSA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA3MDkuMDA1IDUzOS45OTggNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjM4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgNTE3LjIwMyBudWxsXQo+PgplbmRvYmoKMjM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY5Ny4wMDUgMzQ3LjA3NSA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgNDUzLjYwNCBudWxsXQo+PgplbmRvYmoKMjQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgMzI3LjY3NiA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMzkwLjAwNSBudWxsXQo+PgplbmRvYmoKMjQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY3My4wMDUgMjU2LjY1NiA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NzMuMDA1IDUzOS45OTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMzI2LjQwNiBudWxsXQo+PgplbmRvYmoKMjQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgMzc1LjQ1NiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2NjEuMDA1IDU0MC4yMDggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKMjUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgNDE2LjUwMyA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyA2NDkuMDA1IDU0MC4yMDcgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTk5LjIwOCBudWxsXQo+PgplbmRvYmoKMjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgMzI1LjU5NiA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MzcuMDA1IDU0MC4yMDggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTM1LjYwOSBudWxsXQo+PgplbmRvYmoKMjU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYyNS4wMDUgMzI2Ljg2MSA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MjUuMDA1IDU0MC4yMDggNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjEzLjAwNSA0MTkuOTc4IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDYxMy4wMDUgNTQwLjIwOCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNjY0LjQ0NCBudWxsXQo+PgplbmRvYmoKMjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgMzIwLjU4NyA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MDEuMDA1IDU0MC4yMDggNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDYwMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjI2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1ODkuMDA1IDMyMS44NTIgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTg5LjAwNSA1NDAuMjA4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA1NDEuNTk4IG51bGxdCj4+CmVuZG9iagoyNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSA0MTQuOTY5IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU3Ny4wMDUgNTQwLjIwOCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNDgwLjE3NSBudWxsXQo+PgplbmRvYmoKMjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMzEyLjE5MiA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1NjUuMDA1IDU0MC4yMDggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDQxOC43NTIgbnVsbF0KPj4KZW5kb2JqCjI3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NTMuMDA1IDI4OS45MTYgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTUzLjAwNSA1NDAuMjA4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAzNTcuMzI5IG51bGxdCj4+CmVuZG9iagoyNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTQxLjAwNSAzMzAuMzY2IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU0MS4wMDUgNTQwLjIwOCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgMjk1LjkwNiBudWxsXQo+PgplbmRvYmoKMjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgMjk2LjI0IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDUyOS4wMDUgNTQwLjIwOCA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgMjM0LjQ4MyBudWxsXQo+PgplbmRvYmoKMjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUxNy4wMDUgMjk3LjUwNCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1MTcuMDA1IDU0MC4yMDggNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDE3My4wNiBudWxsXQo+PgplbmRvYmoKMjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgMzkwLjYyMiA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1MDUuMDA1IDU0MC4yMDggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDExMS42MzcgbnVsbF0KPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDIzMS45OCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0OTMuMDA1IDUzOS45OTggNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoyOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDgxLjAwNSAzOTcuNzI1IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ4MS4wMDUgNTM5Ljk5OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNjMzLjUzNyBudWxsXQo+PgplbmRvYmoKMjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDA1LjM0MyA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NjkuMDA1IDUzOS45OTggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDU1OS4wNzQgbnVsbF0KPj4KZW5kb2JqCjI5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQwMS4zNyA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NTcuMDA1IDUzOS45OTggNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDQ4NC42MTEgbnVsbF0KPj4KZW5kb2JqCjMwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NDUuMDA1IDM5Ny43MTUgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDQ1LjAwNSA1MzkuOTk4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA0MTAuMTQ4IG51bGxdCj4+CmVuZG9iagozMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDMzLjAwNSA0MDUuMzMzIDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMzM1LjY4NSBudWxsXQo+PgplbmRvYmoKMzA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgNDAxLjM2IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQyMS4wMDUgNTM5Ljk5OCA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMjYxLjIyMiBudWxsXQo+PgplbmRvYmoKMzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQwOS4wMDUgNDI0LjU5MyA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxMCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjY1OCA0MDkuMDA1IDU0MC4zNzggNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDE4Ni43NTkgbnVsbF0KPj4KZW5kb2JqCjMxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzOTcuMDA1IDQxMi4xMDUgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzk3LjAwNSA1NDAuMjA4IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCAxMTIuMjk2IG51bGxdCj4+CmVuZG9iagozMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0MjMuMzY4IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM4NS4wMDUgNTQwLjIwOCAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjMyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDQyOC42OTUgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzczLjAwNSA1NDAuMjA4IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA2MzIuMDAxIG51bGxdCj4+CmVuZG9iagozMjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzYxLjAwNSAzOTQuOTg3IDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM2MS4wMDUgNTQwLjIwOCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNTU2LjAwMiBudWxsXQo+PgplbmRvYmoKMzI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgNDA1LjQxNCAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYxOCAzNDkuMDA1IDU0MC4zMzggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDQ5Mi4wMDMgbnVsbF0KPj4KZW5kb2JqCjMyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDQxNi4yOTcgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzM3LjAwNSA1NDAuMTY4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA0MTYuMDA0IG51bGxdCj4+CmVuZG9iagozMzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzI1LjAwNSAzODcuOTE3IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDMyNS4wMDUgNTQwLjE2OCAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMzQwLjAwNSBudWxsXQo+PgplbmRvYmoKMzM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxMy4wMDUgNDAxLjM1IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMjY0LjAwNiBudWxsXQo+PgplbmRvYmoKMzM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgNDk2LjAxMSAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NiAzMDEuMDA1IDUzOS45OTYgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDIwMC4wMDcgbnVsbF0KPj4KZW5kb2JqCjM0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDQ4My40NDQgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAxMzYuMDA4IG51bGxdCj4+CmVuZG9iagozNDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSA0NTYuODg0IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDI3Ny4wMDUgNTM5Ljk5NyAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjM0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDQ4NS42MTMgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMjY1LjAwNSA1MzkuOTk3IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA2NTMuMzMyIG51bGxdCj4+CmVuZG9iagozNTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSA0OTQuMjU3IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc2IDI1My4wMDUgNTM5Ljk5NiAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNTkzLjA2NCBudWxsXQo+PgplbmRvYmoKMzUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgNDczLjU2NCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAyNDEuMDA1IDUzOS45OTcgMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDUzMi43OTYgbnVsbF0KPj4KZW5kb2JqCjM1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMjkuMDA1IDQ5MC4xODQgMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMjI5LjAwNSA1MzkuOTk3IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA0NzIuNTI4IG51bGxdCj4+CmVuZG9iagozNTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjE3LjAwNSA0NDguOTk5IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDIxNy4wMDUgNTM5Ljk5OCAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNDEyLjI2IG51bGxdCj4+CmVuZG9iagozNjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNSA0OTcuOCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTkzLjAwNSAxNTUuOTggMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yOCAxOTMuMDA1IDU0MC4wIDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAzNTEuOTkyIG51bGxdCj4+CmVuZG9iagozNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0NzMuMzQgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE2OS4wMDUgMTc0Ljc3IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjggMTY5LjAwNSA1NDAuMCAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMjkxLjcyNCBudWxsXQo+PgplbmRvYmoKMzcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDUgNDkyLjc3IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDE1NS45OCAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI4IDE0NS4wMDUgNTQwLjAgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDIzMS40NTYgbnVsbF0KPj4KZW5kb2JqCjM3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDUxMS40OTUgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yOTQgMTMzLjAwNSA1NDAuMDE0IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAxNzEuMTg4IG51bGxdCj4+CmVuZG9iagozNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTIxLjAwNSA0NTQuODQzIDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDEyMS4wMDUgNTM5Ljk5NyAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMTEwLjkyIG51bGxdCj4+CmVuZG9iagozODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTA5LjAwNSA0NzcuMjA5IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDEwOS4wMDUgNTM5Ljk5NyAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjM4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA5Ny4wMDUgNDcxLjQgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDg1LjAwNSAxNzYuMTIgOTQu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Hm9VEB8QcvdN3xj87/8CngThcgplbmRzdHJlYW0KZW5kb2JqCjM5MCAwIG9iagoxNjQ5NwplbmRvYmoKMzkxIDAgb2JqClsKMjM2IDAgUgoyMzcgMCBSCjIzOSAwIFIKMjQwIDAgUgoyNDIgMCBSCjI0MyAwIFIKMjQ1IDAgUgoyNDYgMCBSCjI0OCAwIFIKMjQ5IDAgUgoyNTEgMCBSCjI1MiAwIFIKMjU0IDAgUgoyNTUgMCBSCjI1NyAwIFIKMjU4IDAgUgoyNjAgMCBSCjI2MSAwIFIKMjYzIDAgUgoyNjQgMCBSCjI2NiAwIFIKMjY3IDAgUgoyNjkgMCBSCjI3MCAwIFIKMjcyIDAgUgoyNzMgMCBSCjI3NSAwIFIKMjc2IDAgUgoyNzggMCBSCjI3OSAwIFIKMjgxIDAgUgoyODIgMCBSCjI4NCAwIFIKMjg1IDAgUgoyODcgMCBSCjI4OCAwIFIKMjkwIDAgUgoyOTEgMCBSCjI5MyAwIFIKMjk0IDAgUgoyOTYgMCBSCjI5NyAwIFIKMjk5IDAgUgozMDAgMCBSCjMwMiAwIFIKMzAzIDAgUgozMDUgMCBSCjMwNiAwIFIKMzA4IDAgUgozMDkgMCBSCjMxMSAwIFIKMzEyIDAgUgozMTQgMCBSCjMxNSAwIFIKMzE3IDAgUgozMTggMCBSCjMyMCAwIFIKMzIxIDAgUgozMjMgMCBSCjMyNCAwIFIKMzI2IDAgUgozMjcgMCBSCjMyOSAwIFIKMzMwIDAgUgozMzIgMCBSCjMzMyAwIFIKMzM1IDAgUgozMzYgMCBSCjMzOCAwIFIKMzM5IDAgUgozNDEgMCBSCjM0MiAwIFIKMzQ0IDAgUgozNDUgMCBSCjM0NyAwIFIKMzQ4IDAgUgozNTAgMCBSCjM1MSAwIFIKMzUzIDAgUgozNTQgMCBSCjM1NiAwIFIKMzU3IDAgUgozNTkgMCBSCjM2MCAwIFIKMzYyIDAgUgozNjMgMCBSCjM2NCAwIFIKMzY2IDAgUgozNjcgMCBSCjM2OCAwIFIKMzcwIDAgUgozNzEgMCBSCjM3MiAwIFIKMzc0IDAgUgozNzUgMCBSCjM3NyAwIFIKMzc4IDAgUgozODAgMCBSCjM4MSAwIFIKMzgzIDAgUgozODQgMCBSCjM4NSAwIFIKMzg3IDAgUgozODgg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IC9YWVogNzIuMCA1ODUuNTk2IG51bGxdCj4+CmVuZG9iago0MDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNzA5LjAwNSA0OTIuMjA3IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDcwOS4wMDUgNTM5Ljk5NyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQwOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgNTI0LjM5NCBudWxsXQo+PgplbmRvYmoKNDEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY5Ny4wMDUgNDU0LjQ1NiA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxMSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDQ2My4xOTIgbnVsbF0KPj4KZW5kb2JqCjQxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDQzMy42NjIgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgNjg1LjAwNSA1MzkuOTk3IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCA0MDEuOTkgbnVsbF0KPj4KZW5kb2JqCjQxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NzMuMDA1IDQ1Mi4wODYgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjczLjAwNSA1MzkuOTk4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCAzNDAuNzg4IG51bGxdCj4+CmVuZG9iago0MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSA0OTEuNTM4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDY2MS4wMDUgNTM5Ljk5NyA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMjc5LjU4NiBudWxsXQo+PgplbmRvYmoKNDI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgNDEyLjY0MiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMyAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDIwNi4zODQgbnVsbF0KPj4KZW5kb2JqCjQyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDQxNy4xNDQgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNjM3LjAwNSA1NDAuMTY4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCAxMzMuMTgyIG51bGxdCj4+CmVuZG9iago0MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSA0NjYuOTAyIDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDYyNS4wMDUgNTM5Ljk5NyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyOSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjQzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MTMuMDA1IDQwNC42NTYgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjEzLjAwNSA1MzkuOTk4IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCA2NTMuMzEgbnVsbF0KPj4KZW5kb2JqCjQzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MDEuMDA1IDQxNS45MTggNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjAxLjAwNSA1MzkuOTk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCA1ODEuMDEzIG51bGxdCj4+CmVuZG9iago0MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSA0MjEuMjQ2IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU4OS4wMDUgNTM5Ljk5OCA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNTIwLjcxNiBudWxsXQo+PgplbmRvYmoKNDQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU3Ny4wMDUgMzg3LjUzOCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NzcuMDA1IDUzOS45OTggNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5NSAwIFIgL1hZWiA3Mi4wIDQ0OC40MTkgbnVsbF0KPj4KZW5kb2JqCjQ0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NjUuMDA1IDQwNy4xNDUgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTY1LjAwNSA1MzkuOTk4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAzNzYuMTIyIG51bGxdCj4+CmVuZG9iago0NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSAzODcuMTk5IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU1My4wMDUgNTM5Ljk5OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgMzE1LjgyNSBudWxsXQo+PgplbmRvYmoKNDUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMzcxLjQwNiA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1MCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NDEuMDA1IDUzOS45OTggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5NSAwIFIgL1hZWiA3Mi4wIDI1NS41MjggbnVsbF0KPj4KZW5kb2JqCjQ1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDQ0My40NzQgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42NTggNTI5LjAwNSA1NDAuMzc4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAxODMuMjMxIG51bGxdCj4+CmVuZG9iago0NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSA0MzAuOTg2IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDUxNy4wMDUgNTQwLjIwOCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgMTEwLjkzNCBudWxsXQo+PgplbmRvYmoKNDYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgNDYzLjU1NyA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ1OSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4NyA1MDUuMDA1IDU0MC4yMDcgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago0NjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDkzLjAwNSA0NDcuNTc2IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDQ5My4wMDUgNTQwLjIwOCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgNjQ2LjY2NSBudWxsXQo+PgplbmRvYmoKNDY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgNDEzLjg2OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCA0ODEuMDA1IDU0MC4yMDggNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDU3My4zMyBudWxsXQo+PgplbmRvYmoKNDY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDQ0LjE3OSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NjkuMDA1IDUzOS45OTggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNDcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDQ5OS45OTUgbnVsbF0KPj4KZW5kb2JqCjQ3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQyMC4yMyA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NTcuMDA1IDUzOS45OTggNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDQyNi42NiBudWxsXQo+PgplbmRvYmoKNDc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ0NS4wMDUgNDMxLjUyMSA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA0NDUuMDA1IDUzOS45OTcgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDM1My4zMjUgbnVsbF0KPj4KZW5kb2JqCjQ3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MzMuMDA1IDQzNi4wMjQgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNDMzLjAwNSA1NDAuMTY4IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCAyNzkuOTkgbnVsbF0KPj4KZW5kb2JqCjQ4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MjEuMDA1IDQ4NS43ODQgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDIxLjAwNSA1MzkuOTk4IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCAyMTguNjU1IG51bGxdCj4+CmVuZG9iago0ODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSA0MjMuNTM2IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQwOS4wMDUgNTM5Ljk5OCA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgMTQ1LjMyIG51bGxdCj4+CmVuZG9iago0ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSA0NTYuMTA5IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjQ5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzODUuMDA1IDQ0MC4xMjYgMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzg1LjAwNSA1MzkuOTk4IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCA2NjUuMTAyIG51bGxdCj4+CmVuZG9iago0OTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzczLjAwNSA0MTIuNzUyIDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM3My4wMDUgNTM5Ljk5OCAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAxIDAgUiAvWFlaIDcyLjAgNTkyLjUzNCBudWxsXQo+PgplbmRvYmoKNDk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgNDMyLjM1OSAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNjEuMDA1IDUzOS45OTggMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDUxOS45NjYgbnVsbF0KPj4KZW5kb2JqCjQ5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDQxMi40MTMgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzQ5LjAwNSA1MzkuOTk4IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCA0NDcuMzk4IG51bGxdCj4+CmVuZG9iago1MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzM3LjAwNSAzOTYuNjIgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzM3LjAwNSA1MzkuOTk4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAzNzQuODMgbnVsbF0KPj4KZW5kb2JqCjUwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDM3OC4yMjggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzI1LjAwNSA1NDAuMTY4IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAzMTQuMjYyIG51bGxdCj4+CmVuZG9iago1MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSAzNzguNzI1IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAxIDAgUiAvWFlaIDcyLjAgMjUzLjY5NCBudWxsXQo+PgplbmRvYmoKNTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgMzc0LjUyMyAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUxMCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMDEuMDA1IDUzOS45OTggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDE5My4xMjYgbnVsbF0KPj4KZW5kb2JqCjUxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM4OS4yMzEgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAxMzIuNTU4IG51bGxdCj4+CmVuZG9iago1MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSAzNzguMTU3IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI3Ny4wMDUgNTM5Ljk5OCAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUxNiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjUyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDM3NS42MzggMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjY1LjAwNSA1MzkuOTk4IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCA2NTIuMzI2IG51bGxdCj4+CmVuZG9iago1MjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSAzODcuOTY2IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI1My4wMDUgNTM5Ljk5OCAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgNTkwLjc1IG51bGxdCj4+CmVuZG9iago1MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQxLjAwNSAzNDMuNjYzIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI0MS4wMDUgNTM5Ljk5OCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgNTI5LjE3NCBudWxsXQo+PgplbmRvYmoKNTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgNDEwLjUwMSAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMjkuMDA1IDUzOS45OTggMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDQ1NS41OTggbnVsbF0KPj4KZW5kb2JqCjUzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMTcuMDA1IDQzMC45MDcgMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42NTggMjE3LjAwNSA1NDAuMzc4IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAzODIuMDIyIG51bGxdCj4+CmVuZG9iago1MzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNSA0MTguNDE5IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDIwNS4wMDUgNTQwLjIwOCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgMzA4LjQ0NiBudWxsXQo+PgplbmRvYmoKNTM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE5My4wMDUgNDUwLjk5IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg3IDE5My4wMDUgNTQwLjIwNyAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgMjQ2Ljg3IG51bGxdCj4+CmVuZG9iago1NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0MzUuMDA5IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDE4MS4wMDUgNTQwLjIwOCAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgMTg1LjI5NCBudWxsXQo+PgplbmRvYmoKNTQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE2OS4wMDUgNDAxLjMwMSAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAxNjkuMDA1IDU0MC4yMDggMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDExMS43MTggbnVsbF0KPj4KZW5kb2JqCjU0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTcuMDA1IDQzMS42MTIgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTU3LjAwNSA1MzkuOTk4IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA2OTYuMCBudWxsXQo+PgplbmRvYmoKNTUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE0NS4wMDUgNDA3LjY2MyAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxNDUuMDA1IDUzOS45OTggMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDYyMi42NjUgbnVsbF0KPj4KZW5kb2JqCjU1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDQxOC45NTUgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTMzLjAwNSA1MzkuOTk4IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA1NDkuMzMgbnVsbF0KPj4KZW5kb2JqCjU1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMjEuMDA1IDQyMy40NTcgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMTIxLjAwNSA1NDAuMTY4IDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA0NzUuOTk1IG51bGxdCj4+CmVuZG9iago1NTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTA5LjAwNSA0NzMuMjE3IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDEwOS4wMDUgNTM5Ljk5OCAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA3IDAgUiAvWFlaIDcyLjAgNDE0LjY2IG51bGxdCj4+CmVuZG9iago1NjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQxMC45NjkgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggOTcuMDA1IDUzOS45OTggMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDM0MS4zMjUgbnVsbF0KPj4KZW5kb2JqCjU2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDQzLjU0MiA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDg1LjAwNSA1MzkuOTk4IDk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDI3OS45OSBudWxsXQo+PgplbmRvYmoKNTY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDczLjAwNSA0MjcuNTU5IDgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNzMuMDA1IDUzOS45OTggODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NzAgMCBvYmoKPDwgL0xlbmd0aCA1NzEgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nOWdy44kyXGu9/0U9QJ0+v0CHAwgcjjCOTtBA2hBcCVB0oKUwJVeX/b7JSyy07P69+HUsHsOiGbXZMdXmREZYRd3s9/++sm9Wfnfb/BXaf7tX//y6a/zNfdW/FvIjy+5lN+CNTVla5380yDt+ktewF/4/99Y49Pbnztx/9muv8dLdv3wn2//8um/Ptm3f/z0xz/Jq/8mr6e3//k0ft0C//nTP332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+FBMCDOo8IpgqQomxed8PTYRM/3MLTY/U1uOT9DeTIvQ3D7v+7YynLTb+JKMD9xh1uOxN+c4iDzWfFNGsQ+LbhKKD1qa1+0U+vsPgUU8tAplbmRzdHJlYW0KZW5kb2JqCjU4NyAwIG9iagoxNjYwCmVuZG9iago1ODggMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTg2IDAgUgo+PgplbmRvYmoKNTg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDIxOC42NTUgbnVsbF0KPj4KZW5kb2JqCjU5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA3MDkuMDA1IDM5My44NTEgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1ODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNzA5LjAwNSA1MzkuOTk4IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCAxNDUuMzIgbnVsbF0KPj4KZW5kb2JqCjU5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2OTcuMDA1IDQxMy40NTkgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjk3LjAwNSA1MzkuOTk4IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNTk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgMjUyLjIxOCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1OTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDY2NC40NDQgbnVsbF0KPj4KZW5kb2JqCjU5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NzMuMDA1IDI1Mi4yMTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjczLjAwNSA1MzkuOTk4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA2MDMuMDIxIG51bGxdCj4+CmVuZG9iago2MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSAyNTIuMjE4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY2MS4wMDUgNTM5Ljk5OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgNTQxLjU5OCBudWxsXQo+PgplbmRvYmoKNjA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgMjUyLjIxOCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDQ4MC4xNzUgbnVsbF0KPj4KZW5kb2JqCjYwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDI1Mi4yMTggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA0MTguNzUyIG51bGxdCj4+CmVuZG9iago2MTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSAyNTIuMjE4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYyNS4wMDUgNTM5Ljk5OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxMCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMzU3LjMyOSBudWxsXQo+PgplbmRvYmoKNjE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgMjUwLjYwNSA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxMyAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MTMuMDA1IDUzOS45OTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjE2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDI5NS45MDYgbnVsbF0KPj4KZW5kb2JqCjYxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MDEuMDA1IDI4OS4wMjMgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjAxLjAwNSA1MzkuOTk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCAyMzQuNDgzIG51bGxdCj4+CmVuZG9iago2MjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSAyODYuOTUyIDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU4OS4wMDUgNTM5Ljk5OCA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxOSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMTczLjA2IG51bGxdCj4+CmVuZG9iago2MjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAyNjYuOTc2IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMTExLjYzNyBudWxsXQo+PgplbmRvYmoKNjI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMjg0LjA3NCA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NjUuMDA1IDUzOS45OTggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago2MjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSAzNjkuNTE2IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNzk4IDU1My4wMDUgNTQwLjUxOCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgNjQ2Ljc5OCBudWxsXQo+PgplbmRvYmoKNjMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMzYwLjY1MyA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA1NDEuMDA1IDU0MC4zNDggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDU3My41OTYgbnVsbF0KPj4KZW5kb2JqCjYzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDM3OS4xNTUgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTI5LjAwNSA1NDAuMzQ4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCA1MTIuMzk0IG51bGxdCj4+CmVuZG9iago2MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSA0MDMuODggNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNTE3LjAwNSA1NDAuMzQ4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCA0NTEuMTkyIG51bGxdCj4+CmVuZG9iago2NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTA1LjAwNSA0NDMuNDQ0IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDUwNS4wMDUgNTQwLjM0OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMzc3Ljk5IG51bGxdCj4+CmVuZG9iago2NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDkzLjAwNSA0MDMuNjQxIDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ5My4wMDUgNTQwLjM0OCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMzE2Ljc4OCBudWxsXQo+PgplbmRvYmoKNjQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgMzk5LjkzNyA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA0ODEuMDA1IDU0MC4zNDggNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDI1NS41ODYgbnVsbF0KPj4KZW5kb2JqCjY1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NjkuMDA1IDIzNS4zMSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NjkuMDA1IDUzOS45OTggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDE5NC4zODQgbnVsbF0KPj4KZW5kb2JqCjY1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDIyNC45ODMgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCAxMzMuMTgyIG51bGxdCj4+CmVuZG9iago2NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0MDMuNzEgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDQ1LjAwNSA1MzkuOTk4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgMzQ3LjM5NyA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MzMuMDA1IDUzOS45OTggNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDY2NC40NDQgbnVsbF0KPj4KZW5kb2JqCjY2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MjEuMDA1IDM3Mi4xNjMgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDIxLjAwNSA1MzkuOTk4IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA2MDMuMDIxIG51bGxdCj4+CmVuZG9iago2NjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSAzNjAuODMgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDA5LjAwNSA1MzkuOTk4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA1NDEuNTk4IG51bGxdCj4+CmVuZG9iago2NjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSAzNDcuMzg3IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgNDgwLjE3NSBudWxsXQo+PgplbmRvYmoKNjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgMzY4Ljg1NyAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAzODUuMDA1IDU0MC4yMDggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDQxOC43NTIgbnVsbF0KPj4KZW5kb2JqCjY3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDM2Mi4wOTUgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzczLjAwNSA1MzkuOTk4IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAzNTcuMzI5IG51bGxdCj4+CmVuZG9iago2NzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzYxLjAwNSAzNjIuNjkzIDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDM2MS4wMDUgNTQwLjE2OCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgMjk1LjkwNiBudWxsXQo+PgplbmRvYmoKNjgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgMzc3LjIyMSAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNDkuMDA1IDUzOS45OTggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDIzNC40ODMgbnVsbF0KPj4KZW5kb2JqCjY4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDM1MS4wMjIgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzM3LjAwNSA1MzkuOTk4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAxNzMuMDYgbnVsbF0KPj4KZW5kb2JqCjY4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDM2OS43MDMgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzI1LjAwNSA1MzkuOTk4IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAxMTEuNjM3IG51bGxdCj4+CmVuZG9iago2ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSAzNjIuMzE0IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4OCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjY5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDM4OS45MzggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzAxLjAwNSA1MzkuOTk4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCA2NDUuNzkyIG51bGxdCj4+CmVuZG9iago2OTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjg5LjAwNSAzNTYuODE3IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI4OS4wMDUgNTM5Ljk5OCAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNjk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3Ny4wMDUgMzkwLjQyNiAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNzcuMDA1IDUzOS45OTggMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDUyMS4zNzYgbnVsbF0KPj4KZW5kb2JqCjcwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDQ4My4zNSAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSAxOTMuNzIgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzkgMjUzLjAwNSA1MzkuOTk5IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCA0NDcuMTY4IG51bGxdCj4+CmVuZG9iago3MDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQxLjAwNSA0MjYuNTgzIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI0MS4wMDUgNTM5Ljk5OCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMzYwLjk2IG51bGxdCj4+CmVuZG9iago3MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjI5LjAwNSAyOTYuNjkxIDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDIyOS4wMDUgNTM5Ljk5OCAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMjk4Ljc1MiBudWxsXQo+PgplbmRvYmoKNzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgNDI1Ljk3NiAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMTcuMDA1IDUzOS45OTggMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDIzNi41NDQgbnVsbF0KPj4KZW5kb2JqCjcxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMDUuMDA1IDQ2Ny4yNDIgMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjA1LjAwNSA1MzkuOTk4IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCAxNzQuMzM2IG51bGxdCj4+CmVuZG9iago3MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTkzLjAwNSA0OTMuMDMyIDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDE5My4wMDUgNTM5Ljk5NyAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxNiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMTEyLjEyOCBudWxsXQo+PgplbmRvYmoKNzIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE4MS4wMDUgNDY3LjIzMiAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxOSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxODEuMDA1IDUzOS45OTggMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago3MjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0ODMuNjgzIDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE2OS4wMDUgNTM5Ljk5OCAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNjQ0LjAwMSBudWxsXQo+PgplbmRvYmoKNzI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDUgMzM3LjgxNyAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxNTcuMDA1IDUzOS45OTggMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDU2OC4wMDIgbnVsbF0KPj4KZW5kb2JqCjcyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDMzNy44MTcgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTQ1LjAwNSA1MzkuOTk4IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjczMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBSIC9YWVogNzIuMCA0OTIuMDAzIG51bGxdCj4+CmVuZG9iago3MzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTMzLjAwNSAzMzcuODE3IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDEzMy4wMDUgNTM5Ljk5OCAxNDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczMSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNDE2LjAwNCBudWxsXQo+PgplbmRvYmoKNzM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgMzM3LjgxNyAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczNCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxMjEuMDA1IDUzOS45OTggMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDM0MC4wMDUgbnVsbF0KPj4KZW5kb2JqCjczOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDM3NS42MjggMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTA5LjAwNSA1MzkuOTk4IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBSIC9YWVogNzIuMCAyNzYuMDA2IG51bGxdCj4+CmVuZG9iago3NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDM2NS4yOTIgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggOTcuMDA1IDUzOS45OTggMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDIxMi4wMDcgbnVsbF0KPj4KZW5kb2JqCjc0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDcyLjM5MiA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjU4IDg1LjAwNSA1NDAuMzc4IDk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDEzNi4wMDggbnVsbF0KPj4KZW5kb2JqCjc0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA3My4wMDUgNDM3LjgyNyA4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDczLjAwNSA1NDAuMjA4IDgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQ5IDAgb2JqCjw8IC9MZW5ndGggNzUwIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzlnc2O5Eh2pffxFPECzbb/H2CQQFdl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2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/3QAEAFz/2gAMAwEAAhEDEQA/AP1CoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/0P1CoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/0f1CoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/0v1CoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/0/1CoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK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R+VABtX+6PyoANq/3R+VABtX+6PyoANq/wB0flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav8AdH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/AHR+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/wB0flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav8AdH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/AHR+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/wB0flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qADav8AdH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/dH5UAG1f7o/KgA2r/AHR+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/3R+VABtX+6PyoANq/wB0flQAbV/uj8qADav90flQAbV/uj8qADav90flQAbV/uj8qAI7hV8l/lHSgDF8Pf8AIA0z/rzh/wDQBQBfoAKAP//Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgBk/8AqX+lAGH4e/5AGmf9ecP/AKAKAL9ABQB//9H9Od3iH/oK6f8A+C9//j1ABu8Q/wDQV0//AMF7/wDx6gA3eIf+grp//gvf/wCPUAG7xD/0FdP/APBe/wD8eoAN3iH/AKCun/8Agvf/AOPUAG7xD/0FdP8A/Be//wAeoAN3iH/oK6f/AOC9/wD49QAbvEP/AEFdP/8ABe//AMeoAN3iH/oK6f8A+C9//j1ABu8Q/wDQV0//AMF7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gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4/XP8AkJTf9hCz/wDQoaAOgoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/0v1H/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAD+19I/6Clp/wB/1/xoAP7X0j/oKWn/AH/X/GgA/tfSP+gpaf8Af9f8aAOY1WaGe9klglSRG1C0wyMCD80PcUAdFQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH/0/0loAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAgvPuwf9fdt/wCjkoA6SgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/1P0loAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA53RfGXhzxit6fDepR30eja3Dpd1LFyguUeF3VW6NgSKCRxkEdqAO/oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//V/SWgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMXxl4ZPjHw5eeGzr+raNHfJ5Ut1pcscdyEP3lV3RwuRwSBnHQigDmPhX8H/DPwU8Lt4V8K32p3Vpda1DqDvqEsbyCRmgQgFEQbcRL2zknn0APXqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//1v0z/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAB/YGhf9AWw/wDAZP8ACgA/sDQv+gLYf+Ayf4UAH9gaF/0BbD/wGT/CgA/sDQv+gLYf+Ayf4UAH9gaF/wBAWw/8Bk/woAP7A0L/AKAth/4DJ/hQAf2BoX/QFsP/AAGT/CgA/sDQv+gLYf8AgMn+FAD49E0WKRZYtIskdCGVlt0BUjoQccGgC5QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH/9f9NND1e18QaLYa7ZLcpbajbRXUK3NtLbyhHUMoeKVVkjbBGVdVYHggHirqwdGo6ct07d/xWhFKftYKfcvVBYUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB/9D9I/CGmeL9KsPs/jDxLpmsXCx26JLYaU9ggKwospKNPMTvlDuBuG1WVPmK72qpJTbklu7/AILT77v0aXS7iEFThGEeit6u718vd5Vbum72fLHfqSwoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//R/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//S/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//T/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//ZCmVuZHN0cmVhbQplbmRvYmoKNzczIDAgb2JqCjM4MTcxCmVuZG9iago3NzQgMCBvYmoKPDwKICAvTmFtZSAvSW02CiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDc3NSAwIFIKICAvRmlsdGVyIC9EQ1REZWNvZGUKICAvU3VidHlwZSAvSW1hZ2UKICAvV2lkdGggMTEyOQogIC9IZWlnaHQgNDQ2CiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIC9EZXZpY2VSR0IKPj4Kc3RyZWFtCv/Y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IDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA4MjYgMCBSCj4+CmVuZG9iagoxMjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODI5IDAgUiAvWFlaIDcyLjAgMzczLjIgbnVsbF0KPj4KZW5kb2JqCjgzMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MTcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODMxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDI4Ni44ODMgMzk4LjIwNSA1MjEuOTk5IDQwOC4xOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MjggMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDQ4Ny45MiAzODYuMjA1IDUyMi4wIDM5Ni4xOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA5OC4wIDM3NC4yMDUgMjUwLjM5IDM4NC4xOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzNSAwIG9iago8PCAvTGVuZ3RoIDgzNiAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVrLrtw2DN3PV/gH4uhlWwKCCyR37hTtrugFuiiyatF2kbTIqr9fvUhRpOzxBC0Q5DG2RFEUefiQ5C8XPan450362YKZ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MCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSA0MzMuMTQ2IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY5Ny4wMDUgNTM5Ljk5OCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU1IDAgUiAvWFlaIDcyLjAgNTkwLjA3NCBudWxsXQo+PgplbmRvYmoKODU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgMzU3LjU0NCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NSAwIFIgL1hZWiA3Mi4wIDUyOC4xMTYgbnVsbF0KPj4KZW5kb2JqCjg2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NzMuMDA1IDM5OC4yNzMgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNjczLjAwNSA1NDAuMjA4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTUgMCBSIC9YWVogNzIuMCA0NjYuMTU4IG51bGxdCj4+CmVuZG9iago4NjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSAzODAuNDM4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY2MS4wMDUgNTM5Ljk5OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU1IDAgUiAvWFlaIDcyLjAgNDA0LjIgbnVsbF0KPj4KZW5kb2JqCjg2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NDkuMDA1IDM3Ny4wODIgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjQ5LjAwNSA1MzkuOTk4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTUgMCBSIC9YWVogNzIuMCAzNDIuMjQyIG51bGxdCj4+CmVuZG9iago4NjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjM3LjAwNSAzOTEuNzMgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjggMCBSCi9IIC9JCgo+PgplbmRvYmoKODcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTUgMCBSIC9YWVogNzIuMCAyODAuMjg0IG51bGxdCj4+CmVuZG9iago4NzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSAzODYuMjMzIDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYyNS4wMDUgNTM5Ljk5OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU1IDAgUiAvWFlaIDcyLjAgMjE4LjMyNiBudWxsXQo+PgplbmRvYmoKODc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxMy4wMDUgMjA3LjQzOSA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MTMuMDA1IDUzOS45OTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODc3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OCAwIFIgL1hZWiA3Mi4wIDUzOS45IG51bGxdCj4+CmVuZG9iago4NzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjAxLjAwNSAyMzYuNDM0IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYwMS4wMDUgNTM5Ljk5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzY4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjg4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU4OS4wMDUgMTI1LjI3NiA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1ODkuMDA1IDUzOS45OTggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2OCAwIFIgL1hZWiA3Mi4wIDI2NS44NTQgbnVsbF0KPj4KZW5kb2JqCjg4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzcuMDA1IDI0Ny45NjUgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTc3LjAwNSA1MzkuOTk4IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NzEgMCBSIC9YWVogNzIuMCA1MzUuMiBudWxsXQo+PgplbmRvYmoKODg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU2NS4wMDUgMjM3LjM5MyA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA1NjUuMDA1IDUzOS45OTcgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc3MSAwIFIgL1hZWiA3Mi4wIDI1Ni44IG51bGxdCj4+CmVuZG9iago4OTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTUzLjAwNSA0MTQuMTc3IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDU1My4wMDUgNTQwLjM0OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzc4IDAgUiAvWFlaIDcyLjAgMTUwLjM0MiBudWxsXQo+PgplbmRvYmoKODkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU0MS4wMDUgMzE3LjY1NSA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NDEuMDA1IDUzOS45OTggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc4NCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago4OTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1MjkuMDA1IDEzMi45MDggNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTI5LjAwNSA1MzkuOTk4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MDIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTE3LjAwNSAxMTkuMDYgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTE3LjAwNSA1MzkuOTk4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MDIgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKOTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUwNS4wMDUgMTcxLjkyIDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUwNS4wMDUgNTM5Ljk5OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODAyIDAgUiAvWFlaIDcyLjAgNjI0LjQgbnVsbF0KPj4KZW5kb2JqCjkwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTMuMDA1IDE2Ny44MzMgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MDUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKOTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDgxLjAwNSAxNTAuMzMzIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDQ4MS4wMDUgNTQwLjE2OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0NjkuMDA1IDMzMS4yNDkgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDY5LjAwNSA1MzkuOTk4IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MTcgMCBSIC9YWVogNzIuMCA2ODEuNiBudWxsXQo+PgplbmRvYmoKOTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1Ny4wMDUgMjUxLjEzOSA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxMiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NTcuMDA1IDUzOS45OTggNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDQ1LjAwNSAyODAuNDU4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ0NS4wMDUgNTM5Ljk5OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzMiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODI4IDAgUiAvWFlaIDcyLjAgNjM2LjI1IG51bGxdCj4+CmVuZG9iago5MTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDMzLjAwNSAxODQuNzY4IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxNyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODI4IDAgUiAvWFlaIDcyLjAgMTUwLjk0IG51bGxdCj4+CmVuZG9iago5MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDIxLjAwNSAyMDUuMDk4IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQyMS4wMDUgNTM5Ljk5OCA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyMCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODQwIDAgUiAvWFlaIDcyLjAgMzI4LjA2NSBudWxsXQo+PgplbmRvYmoKOTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwOS4wMDUgMTg0Ljc1OCA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyMyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MDkuMDA1IDUzOS45OTggNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzg0OSAwIFIgL1hZWiA3Mi4wIDU5NS45NzMgbnVsbF0KPj4KZW5kb2JqCjkyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTcuMDA1IDIwMS4yMTMgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVy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37/9/pdvv/3ZvtMYPn75t43IzpptRksfERWnkF21u3zfJu+0+vY2JdMgaDr0V31T8L//D4GC/QEKZW5kc3RyZWFtCmVuZG9iago5MzAgMCBvYmoKMTUxMTUKZW5kb2JqCjkzMSAwIG9iagpbCjg1MSAwIFIKODUyIDAgUgo4NTQgMCBSCjg1NSAwIFIKODU3IDAgUgo4NTggMCBSCjg2MCAwIFIKODYxIDAgUgo4NjMgMCBSCjg2NCAwIFIKODY2IDAgUgo4NjcgMCBSCjg2OSAwIFIKODcwIDAgUgo4NzIgMCBSCjg3MyAwIFIKODc1IDAgUgo4NzYgMCBSCjg3OCAwIFIKODc5IDAgUgo4ODEgMCBSCjg4MiAwIFIKODg0IDAgUgo4ODUgMCBSCjg4NyAwIFIKODg4IDAgUgo4OTAgMCBSCjg5MSAwIFIKODkzIDAgUgo4OTQgMCBSCjg5NiAwIFIKODk3IDAgUgo4OTkgMCBSCjkwMCAwIFIKOTAyIDAgUgo5MDMgMCBSCjkwNSAwIFIKOTA2IDAgUgo5MDggMCBSCjkwOSAwIFIKOTEwIDAgUgo5MTEgMCBSCjkxMyAwIFIKOTE0IDAgUgo5MTUgMCBSCjkxNiAwIFIKOTE4IDAgUgo5MTkgMCBSCjkyMSAwIFIKOTIyIDAgUgo5MjQgMCBSCjkyNSAwIFIKOTI3IDAgUgo5MjggMCBSCl0KZW5kb2JqCjkzMiAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgOTMxIDAgUgogIC9Db250ZW50cyA5MjkgMCBSCj4+CmVuZG9iago5MzMgMCBvYmoKPDwgL0xlbmd0aCA5MzQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nM1ZS2/kNgy++1foD6yXpN5AESCTTIr2VuwAPSz21Hbbw6ZFeunfLynJtvyYjO2dPDJwrCf5iaL40fZTgwr490FuPpL67bF5Km2o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IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJybJPH/D////2+A+I8CADvACMgKZW5kc3RyZWFtCmVuZG9iago5NDAgMCBvYmoKMjAKZW5kb2JqCjk0MSAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUwCiAgL0Jhc2VGb250IC9FQUFBQUErRGVqYVZ1U2Fucy1Cb2xkCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSA5NDIgMCBSCiAgL0Rlc2NlbmRhbnRGb250cyBbOTQzIDAgUl0KPj4KZW5kb2JqCjk0MyAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQStEZWphVnVTYW5zLUJvbGQgCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkgCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDkzNiAwIFIKL0RXIDAKL1cgWyAwIFs2MDAgMzQ4IDQxNSA4MzAgNjg3IDU5MiA3MTEgMTA0MSA2NzggNzExIDQ3OCA2NzQgMzQyIDY4MyA3NzMgODUwIDY4MiA3MTEgMzY1IDY2NSA5MjMgMzQyIDcxNSA3MTUgNzE1IDU5NSAzNzkgNzczIDQ5MyA2OTUgNjk1IDY5NSA2OTUgNjgzIDc2MiAzOTkgNjk1IDY5NSA0MzUgNzMzIDYzNyA3MzIgNzE1IDM0OCA2NDUgMTEwMyA3MjQgNzIwIDM3MiA4MjAgNjk1IDY5NSA4MzYgNjUxIDc3NCA2NTEgNjk1IDg1MCAzNDIgNjk1IDc3MCA0NTcgNDU3IDgxMiA3MTUgODM2IDk5NSA4MzcgNzI1IDU4MiAzNzIgXSBdCj4+CmVuZG9iago5NDIgMCBvYmoKPDwgL0xlbmd0aCA5NDQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nF2U246bMBBA3/MVftw+rMAeAxtpFanKqlIeelHTfgDBJou0AUTIQ/6+4DNNpSLlcvCM7TOGyfaHt0PfzSb7MQ3N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ICAvRm9udCA8PAogIC9GMTYgOTQxIDAgUgogIC9GMTUgOTUwIDAgUgogIC9GMTkgOTU5IDAgUgo+PgogIC9Qcm9jU2V0IFsvUERGIC9JbWFnZUIgL0ltYWdlQyAvVGV4dF0KICAvWE9iamVjdCA8PAogIC9JbTEgNyAwIFIKICAvSW0yIDkgMCBSCiAgL0ltMyAxNiAwIFIKICAvSW00IDE4IDAgUgogIC9JbTUgNzcyIDAgUgogIC9JbTYgNzc0IDAgUgo+PgogIC9Db2xvclNwYWNlIDw8IC9EZWZhdWx0UkdCIDQgMCBSID4+Cj4+CmVuZG9iago5NjQgMCBvYmoKPDwgL051bXMgWzAgPDwgL1MgL0QgPj4gMSA8PCAvUyAvciAvU3QgMiA+PiAyIDw8IC9TIC9yIC9TdCAzID4+IDMgPDwgL1MgL3IgL1N0IDQgPj4gNCA8PCAvUyAvciAvU3QgNSA+PiA1IDw8IC9TIC9yIC9TdCA2ID4+IDYgPDwgL1MgL3IgL1N0IDcgPj4gNyA8PCAvUyAvciAvU3QgOCA+PiA4IDw8IC9TIC9EID4+IDEwIDw8IC9TIC9EIC9TdCAzID4+IDExIDw8IC9TIC9EIC9TdCA0ID4+IDE2IDw8IC9TIC9EIC9TdCA5ID4+IDIxIDw8IC9TIC9EIC9TdCAxNCA+PiAyNiA8PCAvUyAvRCAvU3QgMTkgPj4gMzEgPDwgL1MgL0QgL1N0IDI0ID4+IDMzIDw8IC9TIC9EIC9TdCAyNiA+PiA1MCA8PCAvUyAvRCAvU3QgNDMgPj4gNTQgPDwgL1MgL0QgL1N0IDQ3ID4+XSA+PgplbmRvYmoKeHJlZgowIDk2NQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDEzOSAwMDAwMCBuIAowMDAwMDAyNjc3IDAwMDAwIG4gCjAwMDAwMDI2OTcgMDAwMDAgbiAKMDAwMDAwMjczMCAwMDAwMCBuIAowMDAwMDAzNjYyIDAwMDAwIG4gCjAwMDAwMDM2ODEgMDAwMDAgbiAKMDAwMDA1MjIwNiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAxMDU0ODcgMDAwMDAgbiAKMDAwMDEwNTUwOSAwMDAwMCBuIAowMDAwMTA2MDE3IDAwMDAwIG4gCjAwMDAxMDYwMzcgMDAwMDAgbiAKMDAwMDYxNDY4OCAwMDAwMCBuIAowMDAwNjE0MDk0IDAwMDAwIG4gCjAwMDAxMDYyMzEgMDAwMDAgbiAKMDAwMDExMjQwMiAwMDAwMCBuIAowMDAwMTEyNDIzIDAwMDAwIG4gCjAwMDAxMTk2MDMgMDAwMDAgbiAKMDAwMDExOTYyNCAwMDAwMCBuIAowMDAwMTE5NzA5IDAwMDAwIG4gCjAwMDAxMTk4NDcgMDAwMDAgbiAKMDAwMDEyMDg5MyAwMDAwMCBuIAowMDAwMTIwOTEzIDAwMDAwIG4gCjAwMDAxMjA5NDAgMDAwMDAgbiAKMDAwMDEyMTE1MSAwMDAwMCBuIAowMDAwMTIzODUzIDAwMDAwIG4gCjAwMDAxMjM4NzQgMDAwMDAgbiAKMDAwMDEyNDA2OCAwMDAwMCBuIAowMDAwMTI0MTczIDAwMDAwIG4gCjAwMDAxMjQzMTAgMDAwMDAgbiAKMDAwMDEyNDQxNiAwMDAwMCBuIAowMDAwMTI0NTUzIDAwMDAwIG4gCjAwMDAxMjQ2NjggMDAwMDAgbiAKMDAwMDEyNDgwNCAwMDAwMCBuIAowMDAwMTI0OTMyIDAwMDAwIG4gCjAwMDAxMjUwNjggMDAwMDAgbiAKMDAwMDEyNTIwNCAwMDAwMCBuIAowMDAwMTI1MzMzIDAwMDAwIG4gCjAwMDAxMjU0NjkgMDAwMDAgbiAKMDAwMDEyNTYwNSAwMDAwMCBuIAowMDAwMTI4MTA5IDAwMDAwIG4gCjAwMDAxMjgxMzAgMDAwMDAgbiAKMDAwMDEyODE5OSAwMDAwMCBuIAowMDAwMTI4NDEwIDAwMDAwIG4gCjAwMDAxMjkyNjMgMDAwMDAgbiAKMDAwMDEyOTI4MyAwMDAwMCBuIAowMDAwMTI5NDc3IDAwMDAwIG4gCjAwMDAxMjk1NzIgMDAwMDAgbiAKMDAwMDEyOTcwOCAwMDAwMCBuIAowMDAwMTMxMTAxIDAwMDAwIG4gCjAwMDAxMzExMjIgMDAwMDAgbiAKMDAwMDEzMTE0OSAwMDAwMCBuIAowMDAwMTMxMzYwIDAwMDAwIG4gCjAwMDAxMzMxMTQgMDAwMDAgbiAKMDAwMDEzMzEzNSAwMDAwMCBuIAowMDAwMTMzMzI5IDAwMDAwIG4gCjAwMDAxMzQ2OTUgMDAwMDAgbiAKMDAwMDEzNDcxNiAwMDAwMCBuIAowMDAwMTM0OTEwIDAwMDAwIG4gCjAwMDAxMzYzNDIgMDAwMDAgbiAKMDAwMDEzNjM2MyAwMDAwMCBuIAowMDAwMTM2NTU3IDAwMDAwIG4gCjAwMDAxMzY2MzUgMDAwMDAgbiAKMDAwMDEzNjc3MSAwMDAwMCBuIAowMDAwMTM2OTExIDAwMDAwIG4gCjAwMDAxMzY5ODkgMDAwMDAgbiAKMDAwMDEzNzEyNiAwMDAwMCBuIAowMDAwMTM3MjY2IDAwMDAwIG4gCjAwMDAxMzczNDQgMDAwMDAgbiAKMDAwMDEzNzQ4MiAwMDAwMCBuIAowMDAwMTM3NjIyIDAwMDAwIG4gCjAwMDAxMzc3MDIgMDAwMDAgbiAKMDAwMDEzNzg0MCAwMDAwMCBuIAowMDAwMTM3OTgwIDAwMDAwIG4gCjAwMDAxMzgwNjAgMDAwMDAgbiAKMDAwMDEzODE5OCAwMDAwMCBuIAowMDAwMTM4MzM4IDAwMDAwIG4gCjAwMDAxMzg0MTggMDAwMDAgbiAKMDAwMDEzODU1NiAwMDAwMCBuIAowMDAwMTM4Njk2IDAwMDAwIG4gCjAwMDAxMzg3NzYgMDAwMDAgbiAKMDAwMDEzODkxNCAwMDAwMCBuIAowMDAwMTM5MDU0IDAwMDAwIG4gCjAwMDAxMzkxMzQgMDAwMDAgbiAKMDAwMDEzOTI3MiAwMDAwMCBuIAowMDAwMTM5NDEyIDAwMDAwIG4gCjAwMDAxMzk0OTIgMDAwMDAgbiAKMDAwMDEzOTYzMCAwMDAwMCBuIAowMDAwMTM5NzcwIDAwMDAwIG4gCjAwMDAxMzk4NTAgMDAwMDAgbiAKMDAwMDEzOTk4OCAwMDAwMCBuIAowMDAwMTQwMTI4IDAwMDAwIG4gCjAwMDAxNDAyMDggMDAwMDAgbiAKMDAwMDE0MDM0NiAwMDAwMCBuIAowMDAwMTQwNDg2IDAwMDAwIG4gCjAwMDAxNDA1NjYgMDAwMDAgbiAKMDAwMDE0MDcwMyAwMDAwMCBuIAowMDAwMTQwODQzIDAwMDAwIG4gCjAwMDAxNDA5MjIgMDAwMDAgbiAKMDAwMDE0MTA2MSAwMDAwMCBuIAowMDAwMTQxMjAyIDAwMDAwIG4gCjAwMDAxNDEyODEgMDAwMDAgbiAKMDAwMDE0MTQyMSAwMDAwMCBuIAowMDAwMTQxNTYzIDAwMDAwIG4gCjAwMDAxNDE2NDQgMDAwMDAgbiAKMDAwMDE0MTc4MyAwMDAwMCBuIAowMDAwMTQxOTI1IDAwMDAwIG4gCjAwMDAxNDIwMDYgMDAwMDAgbiAKMDAwMDE0MjE0NiAwMDAwMCBuIAowMDAwMTQyMjg4IDAwMDAwIG4gCjAwMDAxNDIzNjkgMDAwMDAgbiAKMDAwMDE0MjUwOSAwMDAwMCBuIAowMDAwMTQyNjUxIDAwMDAwIG4gCjAwMDAxNDI3MzIgMDAwMDAgbiAKMDAwMDE0Mjg3MiAwMDAwMCBuIAowMDAwMTQzMDE0IDAwMDAwIG4gCjAwMDAxNDMwOTUgMDAwMDAgbiAKMDAwMDE0MzIzNCAwMDAwMCBuIAowMDAwMTQzMzc2IDAwMDAwIG4gCjAwMDA1MjMwMTAgMDAwMDAgbiAKMDAwMDE0MzUxNiAwMDAwMCBuIAowMDAwMTQzNjU4IDAwMDAwIG4gCjAwMDAxNDM3MzcgMDAwMDAgbiAKMDAwMDE0Mzg3NiAwMDAwMCBuIAowMDAwMTQ0MDE4IDAwMDAwIG4gCjAwMDAxNDQwOTcgMDAwMDAgbiAKMDAwMDE0NDIzNyAwMDAwMCBuIAowMDAwMTQ0Mzc5IDAwMDAwIG4gCjAwMDAxNDQ0NTggMDAwMDAgbiAKMDAwMDE0NDU5OCAwMDAwMCBuIAowMDAwMTQ0NzQwIDAwMDAwIG4gCjAwMDAxNDQ4MTkgMDAwMDAgbiAKMDAwMDE0NDk1OSAwMDAwMCBuIAowMDAwMTQ1MTAxIDAwMDAwIG4gCjAwMDAxNDUxODAgMDAwMDAgbiAKMDAwMDE0NTMyMCAwMDAwMCBuIAowMDAwMTQ1NDYyIDAwMDAwIG4gCjAwMDAxNDU1NDEgMDAwMDAgbiAKMDAwMDE0NTY3OSAwMDAwMCBuIAowMDAwMTQ1ODIxIDAwMDAwIG4gCjAwMDAxNDU5MDAgMDAwMDAgbiAKMDAwMDE0NjA0MCAwMDAwMCBuIAowMDAwMTQ2MTgyIDAwMDAwIG4gCjAwMDAxNDYyNjEgMDAwMDAgbiAKMDAwMDE0NjQwMSAwMDAwMCBuIAowMDAwMTQ2NTQzIDAwMDAwIG4gCjAwMDAxNDY2MjIgMDAwMDAgbiAKMDAwMDE0Njc2MSAwMDAwMCBuIAowMDAwMTQ2OTAzIDAwMDAwIG4gCjAwMDAxNDY5ODIgMDAwMDAgbiAKMDAwMDE0NzEyMiAwMDAwMCBuIAowMDAwMTQ3MjY0IDAwMDAwIG4gCjAwMDAxNDczNDUgMDAwMDAgbiAKMDAwMDE0NzQ4NSAwMDAwMCBuIAowMDAwMTQ3NjI3IDAwMDAwIG4gCjAwMDAxNDc3MDggMDAwMDAgbiAKMDAwMDE0Nzg0OCAwMDAwMCBuIAowMDAwMTQ3OTkwIDAwMDAwIG4gCjAwMDAxNDgwNzEgMDAwMDAgbiAKMDAwMDE0ODIxMSAwMDAwMCBuIAowMDAwMTQ4MzUzIDAwMDAwIG4gCjAwMDAxNDg0MzQgMDAwMDAgbiAKMDAwMDE0ODU3NCAwMDAwMCBuIAowMDAwMTQ4NzE2IDAwMDAwIG4gCjAwMDAxNDg3OTYgMDAwMDAgbiAKMDAwMDE0ODkzNSAwMDAwMCBuIAowMDAwMTQ5MDc3IDAwMDAwIG4gCjAwMDAxNDkxNTggMDAwMDAgbiAKMDAwMDE0OTI5OCAwMDAwMCBuIAowMDAwMTQ5NDQwIDAwMDAwIG4gCjAwMDAxNDk1MjEgMDAwMDAgbiAKMDAwMDE0OTY2MSAwMDAwMCBuIAowMDAwMTQ5ODAzIDAwMDAwIG4gCjAwMDAxNDk4ODQgMDAwMDAgbiAKMDAwMDE1MDAyNCAwMDAwMCBuIAowMDAwMTUwMTY2IDAwMDAwIG4gCjAwMDAxNTAyNDUgMDAwMDAgbiAKMDAwMDE1MDM4NSAwMDAwMCBuIAowMDAwMTUwNTI3IDAwMDAwIG4gCjAwMDAxNTA2MDggMDAwMDAgbiAKMDAwMDE1MDc0OCAwMDAwMCBuIAowMDAwMTUwODkwIDAwMDAwIG4gCjAwMDAxNTA5NzEgMDAwMDAgbiAKMDAwMDE1MTExMSAwMDAwMCBuIAowMDAwMTUxMjUzIDAwMDAwIG4gCjAwMDAxNTEzMzQgMDAwMDAgbiAKMDAwMDE1MTQ3NCAwMDAwMCBuIAowMDAwMTUxNjE2IDAwMDAwIG4gCjAwMDAxNTE2OTcgMDAwMDAgbiAKMDAwMDE1MTgzNyAwMDAwMCBuIAowMDAwMTUxOTc5IDAwMDAwIG4gCjAwMDAxNTIwNjAgMDAwMDAgbiAKMDAwMDE1MjIwMCAwMDAwMCBuIAowMDAwMTUyMzQyIDAwMDAwIG4gCjAwMDAxNTI0MjMgMDAwMDAgbiAKMDAwMDE1MjU2MyAwMDAwMCBuIAowMDAwMTUyNzA1IDAwMDAwIG4gCjAwMDAxNTI3ODYgMDAwMDAgbiAKMDAwMDE1MjkyNiAwMDAwMCBuIAowMDAwMTUzMDY4IDAwMDAwIG4gCjAwMDAxNTMxNDkgMDAwMDAgbiAKMDAwMDE1MzI4OSAwMDAwMCBuIAowMDAwMTUzNDMxIDAwMDAwIG4gCjAwMDAxNTM1MTEgMDAwMDAgbiAKMDAwMDE1MzY1MSAwMDAwMCBuIAowMDAwMTUzNzkzIDAwMDAwIG4gCjAwMDAxNTM4NzQgMDAwMDAgbiAKMDAwMDE1NDAxNCAwMDAwMCBuIAowMDAwMTU0MTU2IDAwMDAwIG4gCjAwMDAxNTQyMzUgMDAwMDAgbiAKMDAwMDE1NDM3NCAwMDAwMCBuIAowMDAwMTU0NTE1IDAwMDAwIG4gCjAwMDAxNTQ1OTYgMDAwMDAgbiAKMDAwMDE1NDczNCAwMDAwMCBuIAowMDAwMTU0ODc0IDAwMDAwIG4gCjAwMDAxODM1MzkgMDAwMDAgbiAKMDAwMDE4MzU2MiAwMDAwMCBuIAowMDAwMTg0Mzc1IDAwMDAwIG4gCjAwMDAxODQ1ODkgMDAwMDAgbiAKMDAwMDE4NTgyNCAwMDAwMCBuIAowMDAwMTg1ODQ2IDAwMDAwIG4gCjAwMDAxODYwNDIgMDAwMDAgbiAKMDAwMDE4Nzc4NiAwMDAwMCBuIAowMDAwMTg3ODA4IDAwMDAwIG4gCjAwMDAxODgwMDQgMDAwMDAgbiAKMDAwMDE4OTgzMSAwMDAwMCBuIAowMDAwMTg5ODUzIDAwMDAwIG4gCjAwMDAxOTAwNDkgMDAwMDAgbiAKMDAwMDE5MTQ2OSAwMDAwMCBuIAowMDAwMTkxNDkxIDAwMDAwIG4gCjAwMDAxOTE2ODcgMDAwMDAgbiAKMDAwMDE5MzE0MiAwMDAwMCBuIAowMDAwMTkzMTY0IDAwMDAwIG4gCjAwMDAxOTMzNjAgMDAwMDAgbiAKMDAwMDE5MzQ0MSAwMDAwMCBuIAowMDAwMTkzNTgwIDAwMDAwIG4gCjAwMDAxOTM3MjIgMDAwMDAgbiAKMDAwMDE5MzgwMyAwMDAwMCBuIAowMDAwMTkzOTQzIDAwMDAwIG4gCjAwMDAxOTQwODUgMDAwMDAgbiAKMDAwMDE5NDE2NiAwMDAwMCBuIAowMDAwMTk0MzA2IDAwMDAwIG4gCjAwMDAxOTQ0NDggMDAwMDAgbiAKMDAwMDE5NDUyOSAwMDAwMCBuIAowMDAwMTk0NjY5IDAwMDAwIG4gCjAwMDAxOTQ4MTEgMDAwMDAgbiAKMDAwMDE5NDg5MiAwMDAwMCBuIAowMDAwMTk1MDMyIDAwMDAwIG4gCjAwMDAxOTUxNzQgMDAwMDAgbiAKMDAwMDE5NTI1NSAwMDAwMCBuIAowMDAwMTk1Mzk1IDAwMDAwIG4gCjAwMDAxOTU1MzcgMDAwMDAgbiAKMDAwMDE5NTYxOCAwMDAwMCBuIAowMDAwMTk1NzU4IDAwMDAwIG4gCjAwMDAxOTU5MDAgMDAwMDAgbiAKMDAwMDE5NTk4MSAwMDAwMCBuIAowMDAwMTk2MTIxIDAwMDAwIG4gCjAwMDAxOTYyNjMgMDAwMDAgbiAKMDAwMDE5NjM0MyAwMDAwMCBuIAowMDAwMTk2NDgzIDAwMDAwIG4gCjAwMDAxOTY2MjUgMDAwMDAgbiAKMDAwMDE5NjcwNyAwMDAwMCBuIAowMDAwMTk2ODQ3IDAwMDAwIG4gCjAwMDAxOTY5ODkgMDAwMDAgbiAKMDAwMDE5NzA3MSAwMDAwMCBuIAowMDAwMTk3MjExIDAwMDAwIG4gCjAwMDAxOTczNTMgMDAwMDAgbiAKMDAwMDE5NzQzNSAwMDAwMCBuIAowMDAwMTk3NTc1IDAwMDAwIG4gCjAwMDAxOTc3MTcgMDAwMDAgbiAKMDAwMDE5Nzc5OSAwMDAwMCBuIAowMDAwMTk3OTM5IDAwMDAwIG4gCjAwMDAxOTgwODEgMDAwMDAgbiAKMDAwMDE5ODE2MyAwMDAwMCBuIAowMDAwMTk4MzAzIDAwMDAwIG4gCjAwMDAxOTg0NDUgMDAwMDAgbiAKMDAwMDE5ODUyNyAwMDAwMCBuIAowMDAwMTk4NjY3IDAwMDAwIG4gCjAwMDAxOTg4MDkgMDAwMDAgbiAKMDAwMDE5ODg5MSAwMDAwMCBuIAowMDAwMTk5MDMwIDAwMDAwIG4gCjAwMDAxOTkxNzIgMDAwMDAgbiAKMDAwMDE5OTI1NCAwMDAwMCBuIAowMDAwMTk5Mzk0IDAwMDAwIG4gCjAwMDAxOTk1MzYgMDAwMDAgbiAKMDAwMDE5OTYxNyAwMDAwMCBuIAowMDAwMTk5NzU3IDAwMDAwIG4gCjAwMDAxOTk4OTkgMDAwMDAgbiAKMDAwMDE5OTk4MSAwMDAwMCBuIAowMDAwMjAwMTIwIDAwMDAwIG4gCjAwMDAyMDAyNjIgMDAwMDAgbiAKMDAwMDIwMDM0MiAwMDAwMCBuIAowMDAwMjAwNDgyIDAwMDAwIG4gCjAwMDAyMDA2MjQgMDAwMDAgbiAKMDAwMDIwMDcwNiAwMDAwMCBuIAowMDAwMjAwODQ2IDAwMDAwIG4gCjAwMDAyMDA5ODggMDAwMDAgbiAKMDAwMDIwMTA3MCAwMDAwMCBuIAowMDAwMjAxMjA5IDAwMDAwIG4gCjAwMDAyMDEzNTEgMDAwMDAgbiAKMDAwMDIwMTQzMyAwMDAwMCBuIAowMDAwMjAxNTczIDAwMDAwIG4gCjAwMDAyMDE3MTUgMDAwMDAgbiAKMDAwMDIwMTc5NyAwMDAwMCBuIAowMDAwMjAxOTM3IDAwMDAwIG4gCjAwMDAyMDIwNzkgMDAwMDAgbiAKMDAwMDIwMjE2MSAwMDAwMCBuIAowMDAwMjAyMzAwIDAwMDAwIG4gCjAwMDAyMDI0NDIgMDAwMDAgbiAKMDAwMDIwMjUyNCAwMDAwMCBuIAowMDAwMjAyNjY0IDAwMDAwIG4gCjAwMDAyMDI4MDYgMDAwMDAgbiAKMDAwMDIwMjg4OCAwMDAwMCBuIAowMDAwMjAzMDI4IDAwMDAwIG4gCjAwMDAyMDMxNzAgMDAwMDAgbiAKMDAwMDIwMzI1MiAwMDAwMCBuIAowMDAwMjAzMzkyIDAwMDAwIG4gCjAwMDAyMDM1MzQgMDAwMDAgbiAKMDAwMDIwMzYxNCAwMDAwMCBuIAowMDAwMjAzNzU0IDAwMDAwIG4gCjAwMDAyMDM4OTYgMDAwMDAgbiAKMDAwMDIwMzk3OCAwMDAwMCBuIAowMDAwMjA0MTE4IDAwMDAwIG4gCjAwMDAyMDQyNjAgMDAwMDAgbiAKMDAwMDIwNDM0MiAwMDAwMCBuIAowMDAwMjA0NDgyIDAwMDAwIG4gCjAwMDAyMDQ2MjQgMDAwMDAgbiAKMDAwMDIwNDcwNiAwMDAwMCBuIAowMDAwMjA0ODQ2IDAwMDAwIG4gCjAwMDAyMDQ5ODggMDAwMDAgbiAKMDAwMDIwNTA3MCAwMDAwMCBuIAowMDAwMjA1MjEwIDAwMDAwIG4gCjAwMDAyMDUzNTIgMDAwMDAgbiAKMDAwMDIwNTQzNCAwMDAwMCBuIAowMDAwMjA1NTczIDAwMDAwIG4gCjAwMDAyMDU3MTUgMDAwMDAgbiAKMDAwMDIwNTc5NyAwMDAwMCBuIAowMDAwMjA1OTM3IDAwMDAwIG4gCjAwMDAyMDYwNzkgMDAwMDAgbiAKMDAwMDIwNjE2MSAwMDAwMCBuIAowMDAwMjA2MzAxIDAwMDAwIG4gCjAwMDAyMDY0NDMgMDAwMDAgbiAKMDAwMDIwNjUyNSAwMDAwMCBuIAowMDAwMjA2NjY1IDAwMDAwIG4gCjAwMDAyMDY4MDcgMDAwMDAgbiAKMDAwMDIwNjg4NyAwMDAwMCBuIAowMDAwMjA3MDI3IDAwMDAwIG4gCjAwMDAyMDcxNjkgMDAwMDAgbiAKMDAwMDIwNzI1MSAwMDAwMCBuIAowMDAwMjA3MzkxIDAwMDAwIG4gCjAwMDAyMDc1MzMgMDAwMDAgbiAKMDAwMDIwNzYxNSAwMDAwMCBuIAowMDAwMjA3NzU1IDAwMDAwIG4gCjAwMDAyMDc4OTcgMDAwMDAgbiAKMDAwMDIwNzk3OSAwMDAwMCBuIAowMDAwMjA4MTE5IDAwMDAwIG4gCjAwMDAyMDgyNjEgMDAwMDAgbiAKMDAwMDIwODM0MyAwMDAwMCBuIAowMDAwMjA4NDgzIDAwMDAwIG4gCjAwMDAyMDg2MjUgMDAwMDAgbiAKMDAwMDIwODcwNiAwMDAwMCBuIAowMDAwMjA4ODQ0IDAwMDAwIG4gCjAwMDAyMDg5ODMgMDAwMDAgbiAKMDAwMDIwOTEyMiAwMDAwMCBuIAowMDAwMjA5MjA0IDAwMDAwIG4gCjAwMDAyMDkzNDMgMDAwMDAgbiAKMDAwMDIwOTQ4MiAwMDAwMCBuIAowMDAwMjA5NjIxIDAwMDAwIG4gCjAwMDAyMDk3MDMgMDAwMDAgbiAKMDAwMDIwOTg0MiAwMDAwMCBuIAowMDAwMjA5OTgxIDAwMDAwIG4gCjAwMDAyMTAxMjAgMDAwMDAgbiAKMDAwMDIxMDIwMiAwMDAwMCBuIAowMDAwMjEwMzQyIDAwMDAwIG4gCjAwMDAyMTA0ODQgMDAwMDAgbiAKMDAwMDIxMDU2NiAwMDAwMCBuIAowMDAwMjEwNzA2IDAwMDAwIG4gCjAwMDAyMTA4NDggMDAwMDAgbiAKMDAwMDIxMDkyOSAwMDAwMCBuIAowMDAwMjExMDY5IDAwMDAwIG4gCjAwMDAyMTEyMTEgMDAwMDAgbiAKMDAwMDIxMTI5MSAwMDAwMCBuIAowMDAwMjExNDI4IDAwMDAwIG4gCjAwMDAyMTE1NjUgMDAwMDAgbiAKMDAwMDIxMTcwMiAwMDAwMCBuIAowMDAwMjExNzg0IDAwMDAwIG4gCjAwMDAyMTE5MjIgMDAwMDAgbiAKMDAwMDIxMjA2MiAwMDAwMCBuIAowMDAwMjI4NjM3IDAwMDAwIG4gCjAwMDAyMjg2NjAgMDAwMDAgbiAKMDAwMDIyOTUxMyAwMDAwMCBuIAowMDAwMjI5NzI3IDAwMDAwIG4gCjAwMDAyMzE1ODQgMDAwMDAgbiAKMDAwMDIzMTYwNiAwMDAwMCBuIAowMDAwMjMxODAyIDAwMDAwIG4gCjAwMDAyMzM3MDggMDAwMDAgbiAKMDAwMDIzMzczMCAwMDAwMCBuIAowMDAwMjMzOTI2IDAwMDAwIG4gCjAwMDAyMzU4MDUgMDAwMDAgbiAKMDAwMDIzNTgyNyAwMDAwMCBuIAowMDAwMjM2MDIzIDAwMDAwIG4gCjAwMDAyMzc5MTMgMDAwMDAgbiAKMDAwMDIzNzkzNSAwMDAwMCBuIAowMDAwMjM4MTMxIDAwMDAwIG4gCjAwMDAyNDAwMzUgMDAwMDAgbiAKMDAwMDI0MDA1NyAwMDAwMCBuIAowMDAwMjQwMjUzIDAwMDAwIG4gCjAwMDAyNDAzMzUgMDAwMDAgbiAKMDAwMDI0MDQ3NSAwMDAwMCBuIAowMDAwMjQwNjE3IDAwMDAwIG4gCjAwMDAyNDA2OTkgMDAwMDAgbiAKMDAwMDI0MDgzOSAwMDAwMCBuIAowMDAwMjQwOTgxIDAwMDAwIG4gCjAwMDAyNDEwNjMgMDAwMDAgbiAKMDAwMDI0MTIwMyAwMDAwMCBuIAowMDAwMjQxMzQ1IDAwMDAwIG4gCjAwMDAyNDE0MjYgMDAwMDAgbiAKMDAwMDI0MTU2NiAwMDAwMCBuIAowMDAwMjQxNzA4IDAwMDAwIG4gCjAwMDAyNDE3OTAgMDAwMDAgbiAKMDAwMDI0MTkzMCAwMDAwMCBuIAowMDAwMjQyMDcyIDAwMDAwIG4gCjAwMDAyNDIxNTQgMDAwMDAgbiAKMDAwMDI0MjI5NCAwMDAwMCBuIAowMDAwMjQyNDM2IDAwMDAwIG4gCjAwMDAyNDI1MTggMDAwMDAgbiAKMDAwMDI0MjY1OCAwMDAwMCBuIAowMDAwMjQyODAwIDAwMDAwIG4gCjAwMDAyNDI4ODIgMDAwMDAgbiAKMDAwMDI0MzAyMiAwMDAwMCBuIAowMDAwMjQzMTY0IDAwMDAwIG4gCjAwMDAyNDMyNDQgMDAwMDAgbiAKMDAwMDI0MzM4NCAwMDAwMCBuIAowMDAwMjQzNTI2IDAwMDAwIG4gCjAwMDAyNDM2MDcgMDAwMDAgbiAKMDAwMDI0Mzc0NyAwMDAwMCBuIAowMDAwMjQzODg5IDAwMDAwIG4gCjAwMDAyNDM5NzEgMDAwMDAgbiAKMDAwMDI0NDExMSAwMDAwMCBuIAowMDAwMjQ0MjUzIDAwMDAwIG4gCjAwMDAyNDQzMzUgMDAwMDAgbiAKMDAwMDI0NDQ3NSAwMDAwMCBuIAowMDAwMjQ0NjE3IDAwMDAwIG4gCjAwMDAyNDQ2OTkgMDAwMDAgbiAKMDAwMDI0NDgzOSAwMDAwMCBuIAowMDAwMjQ0OTgxIDAwMDAwIG4gCjAwMDAyNDUwNjMgMDAwMDAgbiAKMDAwMDI0NTIwMyAwMDAwMCBuIAowMDAwMjQ1MzQ1IDAwMDAwIG4gCjAwMDAyNDU0MjcgMDAwMDAgbiAKMDAwMDI0NTU2NyAwMDAwMCBuIAowMDAwMjQ1NzA5IDAwMDAwIG4gCjAwMDAyNDU3OTEgMDAwMDAgbiAKMDAwMDI0NTkzMSAwMDAwMCBuIAowMDAwMjQ2MDczIDAwMDAwIG4gCjAwMDAyNDYxNTUgMDAwMDAgbiAKMDAwMDI0NjI5NSAwMDAwMCBuIAowMDAwMjQ2NDM3IDAwMDAwIG4gCjAwMDAyNDY1MTkgMDAwMDAgbiAKMDAwMDI0NjY1OSAwMDAwMCBuIAowMDAwMjQ2ODAxIDAwMDAwIG4gCjAwMDAyNDY4ODEgMDAwMDAgbiAKMDAwMDI0NzAyMSAwMDAwMCBuIAowMDAwMjQ3MTYzIDAwMDAwIG4gCjAwMDAyNDcyNDUgMDAwMDAgbiAKMDAwMDI0NzM4NSAwMDAwMCBuIAowMDAwMjQ3NTI3IDAwMDAwIG4gCjAwMDAyNDc2MDggMDAwMDAgbiAKMDAwMDI0Nzc0OCAwMDAwMCBuIAowMDAwMjQ3ODkwIDAwMDAwIG4gCjAwMDAyNDc5NzIgMDAwMDAgbiAKMDAwMDI0ODExMSAwMDAwMCBuIAowMDAwMjQ4MjUzIDAwMDAwIG4gCjAwMDAyNDgzMzQgMDAwMDAgbiAKMDAwMDI0ODQ3NCAwMDAwMCBuIAowMDAwMjQ4NjE2IDAwMDAwIG4gCjAwMDAyNDg2OTggMDAwMDAgbiAKMDAwMDI0ODgzOCAwMDAwMCBuIAowMDAwMjQ4OTgwIDAwMDAwIG4gCjAwMDAyNDkwNjEgMDAwMDAgbiAKMDAwMDI0OTIwMSAwMDAwMCBuIAowMDAwMjQ5MzQzIDAwMDAwIG4gCjAwMDAyNDk0MjUgMDAwMDAgbiAKMDAwMDI0OTU2NSAwMDAwMCBuIAowMDAwMjQ5NzA3IDAwMDAwIG4gCjAwMDAyNDk3ODggMDAwMDAgbiAKMDAwMDI0OTkyOCAwMDAwMCBuIAowMDAwMjUwMDcwIDAwMDAwIG4gCjAwMDAyNTAxNTAgMDAwMDAgbiAKMDAwMDI1MDI5MCAwMDAwMCBuIAowMDAwMjUwNDMyIDAwMDAwIG4gCjAwMDAyNTA1MTQgMDAwMDAgbiAKMDAwMDI1MDY1NCAwMDAwMCBuIAowMDAwMjUwNzk2IDAwMDAwIG4gCjAwMDAyNTA4NzggMDAwMDAgbiAKMDAwMDI1MTAxOCAwMDAwMCBuIAowMDAwMjUxMTYwIDAwMDAwIG4gCjAwMDAyNTEyNDIgMDAwMDAgbiAKMDAwMDI1MTM4MiAwMDAwMCBuIAowMDAwMjUxNTI0IDAwMDAwIG4gCjAwMDAyNTE2MDYgMDAwMDAgbiAKMDAwMDI1MTc0NSAwMDAwMCBuIAowMDAwMjUxODg3IDAwMDAwIG4gCjAwMDAyNTE5NjggMDAwMDAgbiAKMDAwMDI1MjEwOCAwMDAwMCBuIAowMDAwMjUyMjUwIDAwMDAwIG4gCjAwMDAyNTIzMzIgMDAwMDAgbiAKMDAwMDI1MjQ3MiAwMDAwMCBuIAowMDAwMjUyNjE0IDAwMDAwIG4gCjAwMDAyNTI2OTYgMDAwMDAgbiAKMDAwMDI1MjgzNiAwMDAwMCBuIAowMDAwMjUyOTc4IDAwMDAwIG4gCjAwMDAyNTMwNjAgMDAwMDAgbiAKMDAwMDI1MzIwMCAwMDAwMCBuIAowMDAwMjUzMzQyIDAwMDAwIG4gCjAwMDAyNTM0MjQgMDAwMDAgbiAKMDAwMDI1MzU2NCAwMDAwMCBuIAowMDAwMjUzNzA2IDAwMDAwIG4gCjAwMDAyNTM3ODYgMDAwMDAgbiAKMDAwMDI1MzkyNiAwMDAwMCBuIAowMDAwMjU0MDY4IDAwMDAwIG4gCjAwMDAyNTQxNTAgMDAwMDAgbiAKMDAwMDI1NDI5MCAwMDAwMCBuIAowMDAwMjU0NDMyIDAwMDAwIG4gCjAwMDAyNTQ1MTMgMDAwMDAgbiAKMDAwMDI1NDY1MyAwMDAwMCBuIAowMDAwMjU0Nzk1IDAwMDAwIG4gCjAwMDAyNTQ4NzcgMDAwMDAgbiAKMDAwMDI1NTAxNyAwMDAwMCBuIAowMDAwMjU1MTU5IDAwMDAwIG4gCjAwMDAyNTUyNDEgMDAwMDAgbiAKMDAwMDI1NTM4MSAwMDAwMCBuIAowMDAwMjU1NTIzIDAwMDAwIG4gCjAwMDAyNTU2MDUgMDAwMDAgbiAKMDAwMDI1NTc0NSAwMDAwMCBuIAowMDAwMjU1ODg3IDAwMDAwIG4gCjAwMDAyNTU5NjkgMDAwMDAgbiAKMDAwMDI1NjEwOCAwMDAwMCBuIAowMDAwMjU2MjUwIDAwMDAwIG4gCjAwMDAyNTYzMzEgMDAwMDAgbiAKMDAwMDI1NjQ3MSAwMDAwMCBuIAowMDAwMjU2NjEzIDAwMDAwIG4gCjAwMDAyNTY2OTUgMDAwMDAgbiAKMDAwMDI1NjgzNSAwMDAwMCBuIAowMDAwMjU2OTc3IDAwMDAwIG4gCjAwMDAyNTcwNTkgMDAwMDAgbiAKMDAwMDI1NzE5OSAwMDAwMCBuIAowMDAwMjU3MzQxIDAwMDAwIG4gCjAwMDAyNTc0MjEgMDAwMDAgbiAKMDAwMDI1NzU2MSAwMDAwMCBuIAowMDAwMjU3NzAzIDAwMDAwIG4gCjAwMDAyNTc3ODUgMDAwMDAgbiAKMDAwMDI1NzkyNSAwMDAwMCBuIAowMDAwMjU4MDY3IDAwMDAwIG4gCjAwMDAyNTgxNDggMDAwMDAgbiAKMDAwMDI1ODI4OCAwMDAwMCBuIAowMDAwMjU4NDMwIDAwMDAwIG4gCjAwMDAyNTg1MTIgMDAwMDAgbiAKMDAwMDI1ODY1MiAwMDAwMCBuIAowMDAwMjU4Nzk0IDAwMDAwIG4gCjAwMDAyNTg4NzUgMDAwMDAgbiAKMDAwMDI1OTAxNCAwMDAwMCBuIAowMDAwMjU5MTU1IDAwMDAwIG4gCjAwMDAyNTkyMzcgMDAwMDAgbiAKMDAwMDI1OTM3NSAwMDAwMCBuIAowMDAwMjU5NTE1IDAwMDAwIG4gCjAwMDAyNTk1OTYgMDAwMDAgbiAKMDAwMDI1OTczNCAwMDAwMCBuIAowMDAwMjU5ODc0IDAwMDAwIG4gCjAwMDAyNzMxMTEgMDAwMDAgbiAKMDAwMDI3MzEzNCAwMDAwMCBuIAowMDAwMjc0MDE5IDAwMDAwIG4gCjAwMDAyNzQyMzMgMDAwMDAgbiAKMDAwMDI3NTQzMiAwMDAwMCBuIAowMDAwMjc1NDU0IDAwMDAwIG4gCjAwMDAyNzU2NTAgMDAwMDAgbiAKMDAwMDI3NzQxMSAwMDAwMCBuIAowMDAwMjc3NDMzIDAwMDAwIG4gCjAwMDAyNzc2MjkgMDAwMDAgbiAKMDAwMDI3ODczOCAwMDAwMCBuIAowMDAwMjc4NzYwIDAwMDAwIG4gCjAwMDAyNzg5NTYgMDAwMDAgbiAKMDAwMDI4MDc0MSAwMDAwMCBuIAowMDAwMjgwNzYzIDAwMDAwIG4gCjAwMDAyODA5NTkgMDAwMDAgbiAKMDAwMDI4MjY5NyAwMDAwMCBuIAowMDAwMjgyNzE5IDAwMDAwIG4gCjAwMDAyODI5MTUgMDAwMDAgbiAKMDAwMDI4Mjk5NyAwMDAwMCBuIAowMDAwMjgzMTM3IDAwMDAwIG4gCjAwMDAyODMyNzkgMDAwMDAgbiAKMDAwMDI4MzM2MCAwMDAwMCBuIAowMDAwMjgzNTAwIDAwMDAwIG4gCjAwMDAyODM2NDIgMDAwMDAgbiAKMDAwMDI4MzcyMiAwMDAwMCBuIAowMDAwMjgzODYyIDAwMDAwIG4gCjAwMDAyODQwMDQgMDAwMDAgbiAKMDAwMDI4NDA4NiAwMDAwMCBuIAowMDAwMjg0MjI2IDAwMDAwIG4gCjAwMDAyODQzNjggMDAwMDAgbiAKMDAwMDI4NDQ1MCAwMDAwMCBuIAowMDAwMjg0NTkwIDAwMDAwIG4gCjAwMDAyODQ3MzIgMDAwMDAgbiAKMDAwMDI4NDgxNCAwMDAwMCBuIAowMDAwMjg0OTU0IDAwMDAwIG4gCjAwMDAyODUwOTYgMDAwMDAgbiAKMDAwMDI4NTE3OCAwMDAwMCBuIAowMDAwMjg1MzE4IDAwMDAwIG4gCjAwMDAyODU0NjAgMDAwMDAgbiAKMDAwMDI4NTU0MiAwMDAwMCBuIAowMDAwMjg1NjgyIDAwMDAwIG4gCjAwMDAyODU4MjQgMDAwMDAgbiAKMDAwMDI4NTkwNiAwMDAwMCBuIAowMDAwMjg2MDQ2IDAwMDAwIG4gCjAwMDAyODYxODggMDAwMDAgbiAKMDAwMDI4NjI3MCAwMDAwMCBuIAowMDAwMjg2NDEwIDAwMDAwIG4gCjAwMDAyODY1NTIgMDAwMDAgbiAKMDAwMDI4NjYzNCAwMDAwMCBuIAowMDAwMjg2Nzc0IDAwMDAwIG4gCjAwMDAyODY5MTYgMDAwMDAgbiAKMDAwMDI4Njk5NyAwMDAwMCBuIAowMDAwMjg3MTM3IDAwMDAwIG4gCjAwMDAyODcyNzkgMDAwMDAgbiAKMDAwMDI4NzM2MSAwMDAwMCBuIAowMDAwMjg3NTAxIDAwMDAwIG4gCjAwMDAyODc2NDMgMDAwMDAgbiAKMDAwMDI4NzcyMyAwMDAwMCBuIAowMDAwMjg3ODYzIDAwMDAwIG4gCjAwMDAyODgwMDUgMDAwMDAgbiAKMDAwMDI4ODA4NyAwMDAwMCBuIAowMDAwMjg4MjI3IDAwMDAwIG4gCjAwMDAyODgzNjkgMDAwMDAgbiAKMDAwMDI4ODQ1MSAwMDAwMCBuIAowMDAwMjg4NTkxIDAwMDAwIG4gCjAwMDAyODg3MzMgMDAwMDAgbiAKMDAwMDI4ODgxNSAwMDAwMCBuIAowMDAwMjg4OTU0IDAwMDAwIG4gCjAwMDAyODkwOTYgMDAwMDAgbiAKMDAwMDI4OTE3OCAwMDAwMCBuIAowMDAwMjg5MzE4IDAwMDAwIG4gCjAwMDAyODk0NjAgMDAwMDAgbiAKMDAwMDI4OTU0MSAwMDAwMCBuIAowMDAwMjg5NjgxIDAwMDAwIG4gCjAwMDAyODk4MjMgMDAwMDAgbiAKMDAwMDI4OTkwNSAwMDAwMCBuIAowMDAwMjkwMDQ1IDAwMDAwIG4gCjAwMDAyOTAxODcgMDAwMDAgbiAKMDAwMDI5MDI2OSAwMDAwMCBuIAowMDAwMjkwNDA4IDAwMDAwIG4gCjAwMDAyOTA1NTAgMDAwMDAgbiAKMDAwMDI5MDYzMiAwMDAwMCBuIAowMDAwMjkwNzcyIDAwMDAwIG4gCjAwMDAyOTA5MTQgMDAwMDAgbiAKMDAwMDI5MDk5NiAwMDAwMCBuIAowMDAwMjkxMTM1IDAwMDAwIG4gCjAwMDAyOTEyNzcgMDAwMDAgbiAKMDAwMDI5MTM1NyAwMDAwMCBuIAowMDAwMjkxNDk3IDAwMDAwIG4gCjAwMDAyOTE2MzkgMDAwMDAgbiAKMDAwMDI5MTcyMSAwMDAwMCBuIAowMDAwMjkxODYxIDAwMDAwIG4gCjAwMDAyOTIwMDMgMDAwMDAgbiAKMDAwMDI5MjA4NSAwMDAwMCBuIAowMDAwMjkyMjI0IDAwMDAwIG4gCjAwMDAyOTIzNjYgMDAwMDAgbiAKMDAwMDI5MjQ0OCAwMDAwMCBuIAowMDAwMjkyNTg4IDAwMDAwIG4gCjAwMDAyOTI3MzAgMDAwMDAgbiAKMDAwMDI5MjgxMiAwMDAwMCBuIAowMDAwMjkyOTUyIDAwMDAwIG4gCjAwMDAyOTMwOTQgMDAwMDAgbiAKMDAwMDI5MzE3NiAwMDAwMCBuIAowMDAwMjkzMzE2IDAwMDAwIG4gCjAwMDAyOTM0NTggMDAwMDAgbiAKMDAwMDI5MzU0MCAwMDAwMCBuIAowMDAwMjkzNjgwIDAwMDAwIG4gCjAwMDAyOTM4MjIgMDAwMDAgbiAKMDAwMDI5MzkwNCAwMDAwMCBuIAowMDAwMjk0MDQ0IDAwMDAwIG4gCjAwMDAyOTQxODYgMDAwMDAgbiAKMDAwMDI5NDI2OCAwMDAwMCBuIAowMDAwMjk0NDA4IDAwMDAwIG4gCjAwMDAyOTQ1NTAgMDAwMDAgbiAKMDAwMDI5NDYzMSAwMDAwMCBuIAowMDAwMjk0NzcxIDAwMDAwIG4gCjAwMDAyOTQ5MTMgMDAwMDAgbiAKMDAwMDI5NDk5NSAwMDAwMCBuIAowMDAwMjk1MTM1IDAwMDAwIG4gCjAwMDAyOTUyNzcgMDAwMDAgbiAKMDAwMDI5NTM1NyAwMDAwMCBuIAowMDAwMjk1NDk3IDAwMDAwIG4gCjAwMDAyOTU2MzkgMDAwMDAgbiAKMDAwMDI5NTcyMSAwMDAwMCBuIAowMDAwMjk1ODYxIDAwMDAwIG4gCjAwMDAyOTYwMDMgMDAwMDAgbiAKMDAwMDI5NjA4NSAwMDAwMCBuIAowMDAwMjk2MjI1IDAwMDAwIG4gCjAwMDAyOTYzNjcgMDAwMDAgbiAKMDAwMDI5NjQ0OSAwMDAwMCBuIAowMDAwMjk2NTg4IDAwMDAwIG4gCjAwMDAyOTY3MjcgMDAwMDAgbiAKMDAwMDI5Njg2OSAwMDAwMCBuIAowMDAwMjk2OTUxIDAwMDAwIG4gCjAwMDAyOTcwOTEgMDAwMDAgbiAKMDAwMDI5NzIzMyAwMDAwMCBuIAowMDAwMjk3MzE0IDAwMDAwIG4gCjAwMDAyOTc0NTQgMDAwMDAgbiAKMDAwMDI5NzU5NiAwMDAwMCBuIAowMDAwMjk3Njc4IDAwMDAwIG4gCjAwMDAyOTc4MTggMDAwMDAgbiAKMDAwMDI5Nzk2MCAwMDAwMCBuIAowMDAwMjk4MDQyIDAwMDAwIG4gCjAwMDAyOTgxODIgMDAwMDAgbiAKMDAwMDI5ODMyNCAwMDAwMCBuIAowMDAwMjk4NDA2IDAwMDAwIG4gCjAwMDAyOTg1NDYgMDAwMDAgbiAKMDAwMDI5ODY4OCAwMDAwMCBuIAowMDAwMjk4NzcwIDAwMDAwIG4gCjAwMDAyOTg5MTAgMDAwMDAgbiAKMDAwMDI5OTA1MiAwMDAwMCBuIAowMDAwMjk5MTMyIDAwMDAwIG4gCjAwMDAyOTkyNzIgMDAwMDAgbiAKMDAwMDI5OTQxNCAwMDAwMCBuIAowMDAwMjk5NDk2IDAwMDAwIG4gCjAwMDAyOTk2MzYgMDAwMDAgbiAKMDAwMDI5OTc3OCAwMDAwMCBuIAowMDAwMjk5ODYwIDAwMDAwIG4gCjAwMDAzMDAwMDAgMDAwMDAgbiAKMDAwMDMwMDE0MiAwMDAwMCBuIAowMDAwMzAwMjI0IDAwMDAwIG4gCjAwMDAzMDAzNjQgMDAwMDAgbiAKMDAwMDMwMDUwNiAwMDAwMCBuIAowMDAwMzAwNTg4IDAwMDAwIG4gCjAwMDAzMDA3MjggMDAwMDAgbiAKMDAwMDMwMDg3MCAwMDAwMCBuIAowMDAwMzAwOTUyIDAwMDAwIG4gCjAwMDAzMDEwOTIgMDAwMDAgbiAKMDAwMDMwMTIzNCAwMDAwMCBuIAowMDAwMzAxMzE2IDAwMDAwIG4gCjAwMDAzMDE0NTUgMDAwMDAgbiAKMDAwMDMwMTU5NiAwMDAwMCBuIAowMDAwMzAxNjc4IDAwMDAwIG4gCjAwMDAzMDE4MTYgMDAwMDAgbiAKMDAwMDMwMTk1NiAwMDAwMCBuIAowMDAwMzAyMDM4IDAwMDAwIG4gCjAwMDAzMDIxNzYgMDAwMDAgbiAKMDAwMDMwMjMxNiAwMDAwMCBuIAowMDAwMzIxNTQxIDAwMDAwIG4gCjAwMDAzMjE1NjQgMDAwMDAgbiAKMDAwMDMyMjQ0MSAwMDAwMCBuIAowMDAwMzIyNjU1IDAwMDAwIG4gCjAwMDAzMjQ2MzcgMDAwMDAgbiAKMDAwMDMyNDY1OSAwMDAwMCBuIAowMDAwMzI0ODU1IDAwMDAwIG4gCjAwMDAzMjY2NTYgMDAwMDAgbiAKMDAwMDMyNjY3OCAwMDAwMCBuIAowMDAwMzI2ODc0IDAwMDAwIG4gCjAwMDAzMjY5NTQgMDAwMDAgbiAKMDAwMDMyNzA5MyAwMDAwMCBuIAowMDAwMzI3MjM1IDAwMDAwIG4gCjAwMDAzMjgyOTMgMDAwMDAgbiAKMDAwMDMyODMxNCAwMDAwMCBuIAowMDAwMzI4MzUxIDAwMDAwIG4gCjAwMDAzMjg1NjUgMDAwMDAgbiAKMDAwMDMzMDUzMyAwMDAwMCBuIAowMDAwMzMwNTU1IDAwMDAwIG4gCjAwMDAzMzA3NTEgMDAwMDAgbiAKMDAwMDMzMjg5OSAwMDAwMCBuIAowMDAwMzMyOTIxIDAwMDAwIG4gCjAwMDAzMzMxMTcgMDAwMDAgbiAKMDAwMDM3MTQ5MCAwMDAwMCBuIAowMDAwMzcxNTEzIDAwMDAwIG4gCjAwMDA0OTQ2NTMgMDAwMDAgbiAKMDAwMDQ5NDY3NyAwMDAwMCBuIAowMDAwNDk1ODAyIDAwMDAwIG4gCjAwMDA0OTU4MjQgMDAwMDAgbiAKMDAwMDQ5NjAyMCAwMDAwMCBuIAowMDAwNDk3ODU0IDAwMDAwIG4gCjAwMDA0OTc4NzYgMDAwMDAgbiAKMDAwMDQ5ODA3MiAwMDAwMCBuIAowMDAwNDk5MzYzIDAwMDAwIG4gCjAwMDA0OTkzODUgMDAwMDAgbiAKMDAwMDQ5OTU4MSAwMDAwMCBuIAowMDAwNTAwNzM1IDAwMDAwIG4gCjAwMDA1MDA3NTcgMDAwMDAgbiAKMDAwMDUwMDk1MyAwMDAwMCBuIAowMDAwNTAyMjkwIDAwMDAwIG4gCjAwMDA1MDIzMTIgMDAwMDAgbiAKMDAwMDUwMjUwOCAwMDAwMCBuIAowMDAwNTAzODQ3IDAwMDAwIG4gCjAwMDA1MDM4NjkgMDAwMDAgbiAKMDAwMDUwNDA2NSAwMDAwMCBuIAowMDAwNTA1NDIzIDAwMDAwIG4gCjAwMDA1MDU0NDUgMDAwMDAgbiAKMDAwMDUwNTY0MSAwMDAwMCBuIAowMDAwNTA2ODc3IDAwMDAwIG4gCjAwMDA1MDY4OTkgMDAwMDAgbiAKMDAwMDUwNzA5NSAwMDAwMCBuIAowMDAwNTA5NTQzIDAwMDAwIG4gCjAwMDA1MDk1NjUgMDAwMDAgbiAKMDAwMDUwOTc2MSAwMDAwMCBuIAowMDAwNTExNTM5IDAwMDAwIG4gCjAwMDA1MTE1NjEgMDAwMDAgbiAKMDAwMDUxMTc1NyAwMDAwMCBuIAowMDAwNTEzOTY4IDAwMDAwIG4gCjAwMDA1MTM5OTAgMDAwMDAgbiAKMDAwMDUxNDE4NiAwMDAwMCBuIAowMDAwNTE0NzQ2IDAwMDAwIG4gCjAwMDA1MTQ3NjcgMDAwMDAgbiAKMDAwMDUxNDk2MyAwMDAwMCBuIAowMDAwNTE1MDg1IDAwMDAwIG4gCjAwMDA1MTUyMjEgMDAwMDAgbiAKMDAwMDUxNzg5MiAwMDAwMCBuIAowMDAwNTE3OTE0IDAwMDAwIG4gCjAwMDA1MTc5NDMgMDAwMDAgbiAKMDAwMDUxODE1NyAwMDAwMCBuIAowMDAwNTE4MjcyIDAwMDAwIG4gCjAwMDA1MTg0MTEgMDAwMDAgbiAKMDAwMDUxODUxMCAwMDAwMCBuIAowMDAwNTE4NjQ5IDAwMDAwIG4gCjAwMDA1MjAyNTYgMDAwMDAgbiAKMDAwMDUyMDI3OCAwMDAwMCBuIAowMDAwNTIwMzE1IDAwMDAwIG4gCjAwMDA1MjA1MjkgMDAwMDAgbiAKMDAwMDUyMjc5MiAwMDAwMCBuIAowMDAwNTIyODE0IDAwMDAwIG4gCjAwMDA1MjYxMjUgMDAwMDAgbiAKMDAwMDUyMzA5MCAwMDAwMCBuIAowMDAwNTIzMTcwIDAwMDAwIG4gCjAwMDA1MjMzMTIgMDAwMDAgbiAKMDAwMDUyMzM5MiAwMDAwMCBuIAowMDAwNTIzNTMxIDAwMDAwIG4gCjAwMDA1MjM2NjkgMDAwMDAgbiAKMDAwMDUyNjA1OCAwMDAwMCBuIAowMDAwNTI2MDgwIDAwMDAwIG4gCjAwMDA1MjYzMzkgMDAwMDAgbiAKMDAwMDUyODQ2OCAwMDAwMCBuIAowMDAwNTI4NDkwIDAwMDAwIG4gCjAwMDA1Mjg2ODYgMDAwMDAgbiAKMDAwMDUzMDQxNSAwMDAwMCBuIAowMDAwNTMwNDM3IDAwMDAwIG4gCjAwMDA1MzA2MzMgMDAwMDAgbiAKMDAwMDUzMjMyMiAwMDAwMCBuIAowMDAwNTMyMzQ0IDAwMDAwIG4gCjAwMDA1MzI1NDAgMDAwMDAgbiAKMDAwMDUzNDgzNCAwMDAwMCBuIAowMDAwNTM0ODU2IDAwMDAwIG4gCjAwMDA1MzUwNTIgMDAwMDAgbiAKMDAwMDUzNTEzMiAwMDAwMCBuIAowMDAwNTM1MjcyIDAwMDAwIG4gCjAwMDA1MzU0MTQgMDAwMDAgbiAKMDAwMDUzNTQ5NiAwMDAwMCBuIAowMDAwNTM1NjM2IDAwMDAwIG4gCjAwMDA1MzU3NzggMDAwMDAgbiAKMDAwMDUzNTg2MCAwMDAwMCBuIAowMDAwNTM2MDAwIDAwMDAwIG4gCjAwMDA1MzYxNDIgMDAwMDAgbiAKMDAwMDUzNjIyNCAwMDAwMCBuIAowMDAwNTM2MzY0IDAwMDAwIG4gCjAwMDA1MzY1MDYgMDAwMDAgbiAKMDAwMDUzNjU4OCAwMDAwMCBuIAowMDAwNTM2NzI4IDAwMDAwIG4gCjAwMDA1MzY4NzAgMDAwMDAgbiAKMDAwMDUzNjk1MCAwMDAwMCBuIAowMDAwNTM3MDkwIDAwMDAwIG4gCjAwMDA1MzcyMzIgMDAwMDAgbiAKMDAwMDUzNzMxNCAwMDAwMCBuIAowMDAwNTM3NDUzIDAwMDAwIG4gCjAwMDA1Mzc1OTUgMDAwMDAgbiAKMDAwMDUzNzY3NyAwMDAwMCBuIAowMDAwNTM3ODE3IDAwMDAwIG4gCjAwMDA1Mzc5NTkgMDAwMDAgbiAKMDAwMDUzODA0MSAwMDAwMCBuIAowMDAwNTM4MTgxIDAwMDAwIG4gCjAwMDA1MzgzMjMgMDAwMDAgbiAKMDAwMDUzODQwMyAwMDAwMCBuIAowMDAwNTM4NTQzIDAwMDAwIG4gCjAwMDA1Mzg2ODUgMDAwMDAgbiAKMDAwMDUzODc2NSAwMDAwMCBuIAowMDAwNTM4OTA0IDAwMDAwIG4gCjAwMDA1MzkwNDYgMDAwMDAgbiAKMDAwMDUzOTEyOCAwMDAwMCBuIAowMDAwNTM5MjY4IDAwMDAwIG4gCjAwMDA1Mzk0MTAgMDAwMDAgbiAKMDAwMDUzOTQ5MCAwMDAwMCBuIAowMDAwNTM5NjMwIDAwMDAwIG4gCjAwMDA1Mzk3NzIgMDAwMDAgbiAKMDAwMDUzOTg1MiAwMDAwMCBuIAowMDAwNTM5OTkyIDAwMDAwIG4gCjAwMDA1NDAxMzQgMDAwMDAgbiAKMDAwMDU0MDIxNiAwMDAwMCBuIAowMDAwNTQwMzU2IDAwMDAwIG4gCjAwMDA1NDA0OTggMDAwMDAgbiAKMDAwMDU0MDU3OCAwMDAwMCBuIAowMDAwNTQwNzE3IDAwMDAwIG4gCjAwMDA1NDA4NTkgMDAwMDAgbiAKMDAwMDU0MDkzOSAwMDAwMCBuIAowMDAwNTQxMDc3IDAwMDAwIG4gCjAwMDA1NDEyMTkgMDAwMDAgbiAKMDAwMDU0MTI5OSAwMDAwMCBuIAowMDAwNTQxNDM4IDAwMDAwIG4gCjAwMDA1NDE1ODAgMDAwMDAgbiAKMDAwMDU0MTY2MCAwMDAwMCBuIAowMDAwNTQxODAwIDAwMDAwIG4gCjAwMDA1NDE5NDIgMDAwMDAgbiAKMDAwMDU0MjAyMiAwMDAwMCBuIAowMDAwNTQyMTYxIDAwMDAwIG4gCjAwMDA1NDIzMDMgMDAwMDAgbiAKMDAwMDU0MjQ0MiAwMDAwMCBuIAowMDAwNTQyNTg0IDAwMDAwIG4gCjAwMDA1NDI2NjQgMDAwMDAgbiAKMDAwMDU0MjgwNCAwMDAwMCBuIAowMDAwNTQyOTQ2IDAwMDAwIG4gCjAwMDA1NDMwODUgMDAwMDAgbiAKMDAwMDU0MzIyNyAwMDAwMCBuIAowMDAwNTQzMzA4IDAwMDAwIG4gCjAwMDA1NDM0NDggMDAwMDAgbiAKMDAwMDU0MzU5MCAwMDAwMCBuIAowMDAwNTQzNjcxIDAwMDAwIG4gCjAwMDA1NDM4MTEgMDAwMDAgbiAKMDAwMDU0Mzk1MyAwMDAwMCBuIAowMDAwNTQ0MDM1IDAwMDAwIG4gCjAwMDA1NDQxNzUgMDAwMDAgbiAKMDAwMDU0NDMxNyAwMDAwMCBuIAowMDAwNTQ0Mzk5IDAwMDAwIG4gCjAwMDA1NDQ1MzkgMDAwMDAgbiAKMDAwMDU0NDY4MSAwMDAwMCBuIAowMDAwNTU5ODc0IDAwMDAwIG4gCjAwMDA1NTk4OTcgMDAwMDAgbiAKMDAwMDU2MDM1MCAwMDAwMCBuIAowMDAwNTYwNTY0IDAwMDAwIG4gCjAwMDA1NjE4MjUgMDAwMDAgbiAKMDAwMDU2MTg0NyAwMDAwMCBuIAowMDAwNTYyMDQzIDAwMDAwIG4gCjAwMDA1NjIzMDggMDAwMDAgbiAKMDAwMDU3Nzc3NiAwMDAwMCBuIAowMDAwNTc3NzUzIDAwMDAwIG4gCjAwMDA1Nzc4NzQgMDAwMDAgbiAKMDAwMDU3Nzg5NCAwMDAwMCBuIAowMDAwNTc4NTczIDAwMDAwIG4gCjAwMDA1NzgwNTkgMDAwMDAgbiAKMDAwMDU3OTE4MyAwMDAwMCBuIAowMDAwNTc5MjA0IDAwMDAwIG4gCjAwMDA1Nzk0NjQgMDAwMDAgbiAKMDAwMDU5Njg5MSAwMDAwMCBuIAowMDAwNTk2ODY4IDAwMDAwIG4gCjAwMDA1OTY5OTggMDAwMDAgbiAKMDAwMDU5NzAxOCAwMDAwMCBuIAowMDAwNTk3NzQ1IDAwMDAwIG4gCjAwMDA1OTcxNzggMDAwMDAgbiAKMDAwMDU5ODQyMSAwMDAwMCBuIAowMDAwNTk4NDQyIDAwMDAwIG4gCjAwMDA1OTg3MDQgMDAwMDAgbiAKMDAwMDYxMjYwOCAwMDAwMCBuIAowMDAwNjEyNTg1IDAwMDAwIG4gCjAwMDA2MTI3MDggMDAwMDAgbiAKMDAwMDYxMjcyOCAwMDAwMCBuIAowMDAwNjEzNDMxIDAwMDAwIG4gCjAwMDA2MTI4OTIgMDAwMDAgbiAKMDAwMDYxNDA3MyAwMDAwMCBuIAowMDAwNjE0NTc5IDAwMDAwIG4gCjAwMDA2MTQ5NDggMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDk2MyAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPDg2MUI5Njk1MDIyMkU5RkFGREM1REFGM0NEQkQ3NjgxPiA8ODYxQjk2OTUwMjIyRTlGQUZEQzVEQUYzQ0RCRDc2ODE+XQogIC9TaXplIDk2NQo+PgpzdGFydHhyZWYKNjE1MzQyCiUlRU9GCg==
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0
Created
1
current_timestamp
1
current_timestamp
1